首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取NoMethodError

获取NoMethodError
EN

Stack Overflow用户
提问于 2011-04-06 02:54:38
回答 3查看 188关注 0票数 0

我得到了这个错误:

显示/Users/nelsonkeating/Desktop/imright/app/views/users/new.html.erb在第4行出现的位置:

NilClass的未定义方法`model_name:类提取的源代码(在第4行附近):

代码语言:javascript
复制
4: <%= form_for(@user) do |f| %>

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-06 02:56:28

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

您可以选择执行以下操作:

代码语言:javascript
复制
form_for(User.new) do |f|

或者在控制器中设置@user

代码语言:javascript
复制
class UsersController
  def new
    @user = User.new
  new
end

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

票数 2
EN

Stack Overflow用户

发布于 2011-09-14 14:05:09

尝试查看页面<%= form_for @user,:url=> {:action =>"create"}在控制器中执行|f| %>定义<%= @user = User.new end

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2011-04-06 02:58:24

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5556979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档