NoMethodError в Пользователи # edit - PullRequest
1 голос
/ 02 марта 2012

У меня есть приложение rails, с помощью которого вы можете редактировать данные своей учетной записи. Когда я нажимаю кнопку edit my information, я получаю следующую ошибку при нажатии на ссылку.

NoMethodError в Users # edit - неопределенный метод name для ноль: NilClass

Который указывает на следующую строку моих пользователей / _form.html.erb

<% else %> <td><%= @user.admin_level.name %>

Мой полный след следует: Pastie

Кажется, что-то не так с user.admin_level.name Кажется, я не могу понять, почему возникает эта ошибка, и имя атрибута существует в сущности admin_level.

Мой users_controller имеет следующую правку редактирования:

 # 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 ]

1 голос
/ 02 марта 2012

Это просто означает, что <%= @user.admin_level %> равно nil. Это может быть потому, что у пользователя нет назначенного уровня admin_level. Следовательно, вызов .name для nil приводит к ошибке noMethodError.

Правильно будет <%= @user.admin_level.name if @user.admin_level %> или, может быть, <%= @user.admin_level.try(:name) %> (которые оба отображают что-то, только если admin_level не ноль)

0 голосов
/ 02 марта 2012

Глядя на исключение, кажется, что @ user.admin_level - ноль.

Можете ли вы проверить, действительно ли это установлено (использовать оператор отладки) и сообщить, как установлен @user?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...