我想围绕这个问题来解决我的问题。我知道意见不应该有那么多的逻辑。我有一个与用户,帖子和评论的应用程序。用户有很多帖子和评论。如何从我的视图中删除此逻辑?
class User < ActiveRecord::Base
has_many :posts
has_many :comments
帖子属于用户,并有很多评论。
class Post < ActiveRecord::Base
has_many :comments
belongs_to :user
评述属于用户和帖子
class Comment < ActiveRecord::Base
belongs_to :post
belongs_to :user
在我的岗位#放映视图中显示我的下发表评论。我想显示发表评论的用户的姓名。目前我有这个在我看来:
<% @post.comments.each do |comment| %>
<p>
<b>Commenter:</b>
<%= link_to User.find(comment.userid).login, User.find(comment.userid) %>
</p>
<p>
<b>Comment:</b>
<%= comment.body %>
</p>
<% end %>
我应该有我的帖子控制器中的逻辑。但我很困惑。 @ post.comments返回属于帖子的评论数组(?)。这意味着我不能拥有@commenter = @ post.comments.userid。我对这个问题感到困惑,所以我可能没有解释清楚。
一个建议,你可以使用'<%=渲染:部分=> @ post.comments%>'来遍历那些评论一个接一个。在这种情况下,您必须将循环提取到另一个视图文件'_comment.html.erb'中。 – PeterWong 2010-09-26 15:39:12
谢谢。这只是为了清理代码吗? – 2010-09-26 15:47:53
是的,用于清理。我的回答会在视图文件中清除你的'User.find ...',我的注释会清理你的'@ post.comments.each'循环。 – PeterWong 2010-09-26 15:52:54