我正在使用public_activity gem跟踪我的Reposts模型的更改,其中包含comment_id和belongs_to Comments表。在Repost的创建操作的 _create.html.erb 部分中,我可以使用此代码而不会出现错误:
<%= activity.trackable.comment %>
并且视图将显示此文本:
Comment:0x00000004508ee0>
这证明它使用我在Reposts和Comments之间建立的关系显示Activerecord。但是,一旦我尝试扩展代码以显示评论表上的内容字段,我就会收到错误。例如:
<%= activity.trackable.comment.content %>
返回以下错误:
undefined method 'content' for nil:NilClass
activity.trackable.comment似乎拉开了正确的记录。我怎样才能扩展这一点,这样不仅可以通过已建立的关系拉取记录,还可以从该表中提取另一个字段?
谢谢!
编辑1: views / public_activity / _create.html.erb
的完整视图<% if activity.trackable %>
<%= link_to activity.trackable.comment, activity.trackable.comment %>
<% else %>
which has since been removed
<% end %>
编辑2:根据Leo的帮助,我所要做的就是检查是否为零。以下是我必须将代码更改为:
<% if activity.trackable && activity.trackable.comment.present? %>
<%= link_to activity.trackable.comment.content, activity.trackable.comment %>
<% else %>
which has since been removed
<% end %>
我强烈建议您添加其他代码以检查 nil ,如果您按照我的方式执行public_activity Railscast。
答案 0 :(得分:1)
因此,对于这个特定问题,activity.trackable.comment
正在为某些活动返回NilClass
对象,从而导致抛出异常。
当然,修复方法是通过执行以下操作来检查comment
是否为零
<% if activity.trackable && activity.trackable.comment.present? %>
<%= link_to activity.trackable.comment.content, activity.trackable.comment %>
<% else %>
which has since been removed
<% end %>
答案 1 :(得分:0)
您似乎正在访问错误的对象以获取计数。我过去曾使用impressionist_count
方法处理此类任务,文档here可能会对您有所帮助。