Неопределенный метод для nil: NilClass в представлении ассоциации - PullRequest
1 голос
/ 09 июля 2010

Галерея имеет много фотографий.Фотографии принадлежат к галерее

В моем представлении "показать" фото я получаю ошибку "неопределенный метод" имя "для nil: NilClass" для строки

<%= @photo.gallery.name %>

ошибка появляется только на фотографияхне являются частью галереи (которой не назначено название галереи) те, которые появляются, отображаются должным образом, т.е. отображается название галереи, к которой принадлежит.API говорит: «Ruby вызывает NoMethodError, если вы вызываете метод для объекта, который не отвечает на него», но разве объект фотографии не должен отвечать на gallery.name, даже если он пуст?как модели правильно связаны ...

Ответы [ 2 ]

4 голосов
/ 09 июля 2010

Возможно, вы этого не понимаете, но вы делаете цепочку методов.

@photo.gallery возвращает объект галереи, связанный с фотографией.@photo.gallery.name возвращает имя, связанное с объектом "Галерея", связанным с фотографией.

Может быть проще представить это как (@photo.gallery).name

Следующее кодирование эквивалентно вашему коду:

<% @gallery = @photo.gallery %>
<%= @gallery.name %>

В вашем случае, когда у фотографии нет галереи, @ photo.gallery возвращает ноль.Вам просто нужно проверить это:

<%= @photo.gallery.name unless @photo.gallery.nil? %>

Или иметь альтернативный вариант, когда его не существует, что вы хотите.

0 голосов
/ 09 июля 2010

Было бы лучше определить в Фотомодели, является ли галерея обязательной для фотографии.

validate_presence_of :gallery_id

Тогда эта проблема не возникнет.

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