我有一个rails应用程序,您可以编辑您的帐户信息。单击edit my information按钮时,单击链接时会收到以下错误。
NoMethodError in Users#edit -用于nil的未定义方法“`name”:NilClass
它指向我的用户/_form.html.erb的下面一行
<% else %> <td><%= @user.admin_level.name %>我的全部跟踪记录如下:帕斯蒂
user.admin_level.name似乎有问题,但我似乎无法理解的是,为什么会发生此错误,admin_level实体中也存在属性名。
我的users_controller有以下def编辑:
# GET /users/:id/edit
def edit
if @user
respond_to do |format|
format.html # edit.html.erb
end
else
redirect_to routing_error_path
end
end似乎我遗漏了什么,我需要在我的users_controller中定义名称吗?
发布于 2012-03-02 12:06:41
它仅仅意味着<%= @user.admin_level %>是nil。这可能是因为用户没有分配admin_level。因此,在零上调用.name,结果是一个noMethodError。
正确的是<%= @user.admin_level.name if @user.admin_level %>,或者可能是<%= @user.admin_level.try(:name) %> (两者都只在admin_level不是零的情况下显示)
发布于 2012-03-02 12:07:48
从例外来看,@user.admin_level似乎是零。
您能检查这是否真的设置(使用调试-语句)并张贴@用户是如何设置的吗?
https://stackoverflow.com/questions/9532941
复制相似问题