2012-03-02 3 views
1

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

NoMethodError пользователей # редактирования - неопределенный метод `имя» для ноль: NilClass

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

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

Мой полный след следования: Pastie

Что-то не так с user.admin_level.name Что я могу t, похоже, понимает, почему эта ошибка возникает и имя атрибута существует в объекте 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?

+0

admin_level ничтожно, поэтому вы не можете вызвать метод на нем. Чтобы избежать этого исключения от взрыва, попробуйте этот код вместо <% = @ user.admin_level.try (: name)%> – mohamagdy

ответ

1

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

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

+0

Работали как очарование! :-) –

0

Глядя за исключением, кажется, что @ user.admin_level равна нулю.

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

Смежные вопросы