In a view I have the following:
<% @top_posts.each do |post| %>
<li>
<%= post.title %><br />
<%= link_to "Most popular comment", comment_path( post.comments.order("vote_cnt DESC").first )
</li>
<% end %>
I know it is considered poor form to have the post.comments.order("vote_cnt DESC").first query in a view. However, since I’m combining both post and comment data to create a single list item, I’m having a hard time understanding how to get this “combo-pack” of data built in the controller. Should I be constructing some sort of @hash in the controller and then iterate on @hash.each in the view? Is that the right approach?
Or is the job for a scope on my Post model? Is there some ActiveRecord magic that I’m missing that makes this easy? I’m still pretty rookie at RoR, and am just beginning to see just how much I don’t understand.
What I’d do is add a method in my
Postmodel to get the first comment according to your criterias. The view would then look likecomment_path(post.relevant_comment).