#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 действительно кажется хорошей идеей