зацикливание и связанные с моделью отображения данные

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я просматриваю набор записей и хотел бы одновременно отображать связанные с моделью данные. Однако при попытке отобразить связанные данные я получаю сообщение об ошибке

Кто-нибудь может сказать мне, что не так со следующим кодом?

 <% @subs.each do |submission| %>
    <%= submission.SUB_OID %>
    <%= submission.SUB_ASSAY_TYPE %>
    <%= submission.author.AUT_NAME %> -- am getting the error because of this line

<% end %>
  

Модель:
У подзаголовка есть один автор
Автор принадлежит к подразделу

Если я удалю эту строку <%= submission.author.AUT_NAME %> , список отправлений отобразится правильно, однако, когда я включаю 3-ю строку, я получаю сообщение об ошибке «Не определяет метод для AUT_NAME».

Я не понимаю, где обнаружена ошибка.

Я новичок и был бы благодарен за любое предоставленное предложение

Комментарии:

1. Есть ли у авторской модели AUT_NAME атрибут или метод?

Ответ №1:

Либо у вашего author нет имени поля / метода AUT_NAME , либо ваша связь неверна. Можете ли вы проверить, submission.author равно нулю, и убедиться, что AUT_NAME существует?

Ответ №2:

Наконец-то найдено решение. Я включил следующее условие if —

<% если submission.author %> <%= submission.author.AUT_NAME %> <% end %>

Не удалось отобразить имя автора по той причине, что не со всеми материалами связана запись в таблице authors.

Комментарии:

1. В последних версиях Rails вы можете использовать метод ‘try’: submission.author.try(:AUT_NAME) который вместо создания исключения вернет ‘nil’, если автор равен нулю. Код может быть более читаемым.

2. Большое спасибо за предложение, Арсен, метод try действительно кажется хорошей идеей