Rails 3.1 - правильный подход для удаления запроса из представления и обработки его в контроллере или модели - PullRequest
0 голосов
/ 17 февраля 2012

В представлении у меня есть следующее:

<% @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 в плохом виде считается плохим тоном. Однако, поскольку я объединяю данные постов и комментариев для создания одного элемента списка, мне трудно понять, как получить этот «комбинированный пакет» данных, встроенный в контроллер. Должен ли я создать какой-то @hash в контроллере, а затем повторить на @hash.each в представлении? Это правильный подход?

Или это работа для прицела в моей модели Post? Есть ли какая-то магия ActiveRecord, которую мне не хватает, которая делает это легким? Я все еще довольно новичок в RoR и только начинаю понимать, насколько сильно я не понимаю.

1 Ответ

2 голосов
/ 17 февраля 2012

Я бы добавил метод в моей модели Post, чтобы получить первый комментарий в соответствии с вашими критериями.Тогда вид будет выглядеть как comment_path(post.relevant_comment).

...