Rails 3.1 - 正确的方法从视图中删除查询并在控制器或模型中处理它

时间:2012-02-17 17:48:28

标签: ruby-on-rails-3.1 rails-activerecord erb

在视图中,我有以下内容:

<% @top_posts.each do |post| %>
  <li>
    <%= post.title %><br /> &nbsp;&nbsp;
    <%= link_to "Most popular comment", comment_path( post.comments.order("vote_cnt DESC").first )
  </li>
<% end %>

我知道在视图中使用post.comments.order("vote_cnt DESC").first查询被视为不良格式。但是,由于我将post和comment数据结合起来创建一个列表项,我很难理解如何获得控制器中内置的这个“组合包”数据。我应该在控制器中构建某种@hash,然后在视图中迭代@hash.each吗?这是正确的方法吗?

或者我的Post模型上的作品是?是否有一些我想念的ActiveRecord魔法让这很容易?我仍然是RoR的新秀,我刚刚开始看到我有多么不理解。

1 个答案:

答案 0 :(得分:2)

我要做的是在我的Post模型中添加一个方法,根据您的标准获得第一条评论。该视图看起来像comment_path(post.relevant_comment)