获得NoMethodError

时间:2011-04-05 18:54:38

标签: ruby-on-rails ruby-on-rails-3

我收到此错误:

显示/Users/nelsonkeating/Desktop/imright/app/views/users/new.html.erb第4行引发:

NilClass:Class的未定义方法`model_name' 提取的来源(第4行):

4: <%= form_for(@user) do |f| %>

5:   <div class="field">
6:     <%= f.label :name %><br />
7:     <%= f.text_field :name %>

我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:2)

然后

@user不存在(查看错误,因为它说它是一个NilClass)。

你要么做:

form_for(User.new) do |f|

或在控制器中设置@user;

class UsersController
  def new
    @user = User.new
  new
end

我建议使用后者,因为MVC不会在你的视图中放置模型调用是一个经验法则。

答案 1 :(得分:1)

尝试查看页面 &lt;%= form_for @user,:url =&gt; {:action =&gt;“create”}执行| f | %GT; 在控制器中 def new       @user = User.new     端

def create
  @user = User.new(params[:user])

           if @user.save
        flash[:notice] = "Registration successful."
           redirect_to(:controller =>"user_sessions", :action =>"new")
     else
            render :action => 'new'
     end

end

答案 2 :(得分:0)

这表明@user是零。也许您将变量名称从@user更改为控制器中的其他名称并忘记在视图中更改它?也许这个视图在错误发生后在创建或更新操作中呈现,并且在这些操作中除了@user之外还调用了变量?