Я использую камень public_activity для отслеживания изменений с помощью моей модели Reposts, которая содержит комментарий_ид и принадлежит таблице комментариев. В _create.html.erb частичного для создания действия REPOST, я могу использовать этот код без ошибок:Показать значение activity.trackable with public_activity Rails gem
<%= activity.trackable.comment %>
и вид будет отображать этот текст:
Comment:0x00000004508ee0>
Каких доказывает, что он отображает Activerecord, используя отношения, которые я установил между Reposts и Comments. Однако, как только я попытаюсь расширить код, чтобы показать поле содержимого в таблице комментариев, я получаю сообщение об ошибке. Например:
<%= activity.trackable.comment.content %>
Возвращает следующее сообщение об ошибке:
undefined method 'content' for nil:NilClass
activity.trackable.comment кажется тянуть правую запись. Как я могу продлить это, так что он не только вытягивает запись через установленную связь, но также вытягивает другое поле из этой таблицы?
Спасибо!
EDIT 1: Полный вид на просмотров/public_activity/_create.html.erb
<% if activity.trackable %>
<%= link_to activity.trackable.comment, activity.trackable.comment %>
<% else %>
which has since been removed
<% end %>
EDIT 2: На помощь Лео, все, что я должен был сделать чек на ноль. Вот что я должен был изменить мой код:
<% if activity.trackable && activity.trackable.comment.present? %>
<%= link_to activity.trackable.comment.content, activity.trackable.comment %>
<% else %>
which has since been removed
<% end %>
Я настоятельно рекомендую, добавив, что дополнительный код для проверки ноль если вы следовали по public_activity Railscast, как я сделал.
Вы итерация по списку мероприятий? Есть ли вероятность, что 'trackable.comment 'возвращает объект nil? –
Спасибо за ответ Лев. Я опубликовал весь код частичного просмотра. Это влияет на все действия, перечисленные на странице, но поле заполняется для всех строк в базе данных. Пустые поля не должны вызывать проблему – winston
Где находится переменная 'activity'? Мне кажется, что он должен работать нормально, выбор объекта отношений 'comment' должен позволить вам получить свои поля по умолчанию, если вы не укажете его не ... что происходит, так это то, что activity.trackable.comment возвращает объект nil , Поэтому 'comment' не является объектом AR. Вот почему я спросил, повторяете ли вы действия, а что нет. –