我有一个rails应用程序,您可以编辑您的帐户信息。当我单击edit my information
按钮时,单击链接时收到以下错误。
用户中的NoMethodError#edit - 未定义的方法`name'for 零:NilClass
指向我的用户/ _form.html.erb
的以下行<% else %> <td><%= @user.admin_level.name %>
我的完整追踪如下:Pastie
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中定义名称?
答案 0 :(得分:1)
这只是意味着<%= @user.admin_level %>
是nil
。这可能是因为用户没有分配admin_level。因此,在nil上调用.name
会导致noMethodError。
正确为<%= @user.admin_level.name if @user.admin_level %>
,或者<%= @user.admin_level.try(:name) %>
(如果admin_level
不为零,则只显示某些内容)
答案 1 :(得分:0)
查看异常似乎@ user.admin_level为零。
你能检查一下这是否真的设置了(使用调试语句)并发布@user是如何设置的?