在不同的视图中设计forms“未定义的方法`’为nil:NilClass”

所以我试图在不同的控制器中做与Deviseforms完全相同的事情

在另一页上准确设计登录表单

我有一个辅助模块

def resource_name :user end def resource @resource ||= User.new end def devise_mapping @devise_mapping ||= Devise.mappings[:user] end 

但我得到nil的未定义方法`[]’:NilClass就行了

  true %>

我在views / devise / sessions / new.html.erb中添加了

我在Home#index #User中初始化时遇到RuntimeError

 

Sign in

resource_name, :url => user_session_path(resource_name)) do |f| %>

true %>

我也尝试过这个辅助模块

 def resource_name :user end def resource @resource = User.new end def devise_mapping @devise_mapping = Devise.mappings[:user] end 

在Home#index中,我有以下内容

 
"devise/sessions/new" %>

如果views / devise / sessions / new.html.erb编辑为“nil:NilClass”的错误“undefined method` []’将会消失

  @user, :url => user_session_path(@user)) do |f| %> 

但是如果将放回views / devise / sessions / new.html.erb中

仍然会#User未初始化>

在user.rb中

 devise :database_authenticatable, :registerable, :confirmable, :recoverable, :rememberable, :trackable, :validatable 

在application_controller.rb中

 class ApplicationController < ActionController::Base protect_from_forgery helper :all end 

使用’rails’,’3.2.11′

我不确定为什么辅助模块不能像资源那样工作。 谁能帮我理解为什么? 为什么得到“未定义的方法`[]’为nil:NilClass”?

先感谢您。

我想这一行

 <%= form_for(:user, :as => @user, :url => user_session_path(@user)) do |f| %> 

应该

 <%= form_for(@user, :as => :user, :url => user_session_path(@user)) do |f| %>