用户编辑中的NoMethodError

时间:2012-03-02 11:59:52

标签: ruby-on-rails ruby-on-rails-3.1

我有一个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中定义名称?

2 个答案:

答案 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是如何设置的?