如何在登录表单中设置Devise和Rails

我想在我网站的标题中添加一个登录表单。 我使用Rails 3.2.8和最新的Devise。 在app/views/devise/sessions/new.html.erb文件中,创建了一个登录表单:

   resource_name, :url => session_path(resource_name), :html => {:class => 'main'}) do |f| %> 
'Enter username' %>
'Enter password' %>

如果我尝试复制该代码并将其放在我的application.html.erb ,我会收到有关上面引用的资源变量的错误:

 undefined local variable or method `resource' for #<#:0x3c73b00> 

那么我可以使用/users/sign_in作为动作使用普通的railsforms吗? 如何在登录后告诉设计重定向到哪里?

您必须在所有将显示带有登录表单的标头的控制器操作中包含@user = User.new

例如,假设您有一个带有Home动作的Pages控制器。 并且您希望在应用程序布局的导航中显示登录表单。

 class PagesController < ApplicationController def home @user = User.new end end 

在application.html.haml上,你会有类似的东西

 - if user_signed_in? = link_to "sign out", destroy_user_session_path, method: :delete - else = form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => 'main'}) do |f| ...