我正在使用 public_activity gem 来跟踪我的 Reposts 模型的更改,该模型包含一个 comment_id 和 belongs_to Comments 表。在Repost 的创建操作的_create.html.erb部分中,我可以使用此代码而不会出现错误:
<%= activity.trackable.comment %>
并且视图将显示以下文本:
Comment:0x00000004508ee0>
这证明它使用我在转发和评论之间建立的关系来显示 Activerecord。但是,一旦我尝试扩展代码以在 Comments 表上显示内容字段,我就会收到错误消息。例如:
<%= 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 %>
如果您像我一样遵循 public_activity Railscast ,我强烈建议添加额外的代码来检查nil 。