Rails 3 sort_by осложнения - PullRequest
       0

Rails 3 sort_by осложнения

1 голос
/ 06 марта 2011

Итак, у меня есть приложение на форуме и двойные вложенные ресурсы.Раздел -> Тема -> Ответы и настраиваются как таковые в контроллере приложения (стиль Rails 3).Я смотрю на раздел и пытаюсь отсортировать мои темы.На большинстве форумов наиболее логичным является метод сортировки по последнему обновлению.Это было бы просто, если бы это было просто ответами.Очевидная проблема в том, что есть темы без ответов, поэтому сортировка по ответам не будет работать.

            <% @section.topics.sort_by{ ?? }.each do |topic| %>
              <tr>
                <td class="topic"><%= link_to topic.subject, [@section, topic] %></td>
                <td class="postCount"><%= topic.replies.count %></td>
                <td class="date">
                <% if topic.replies.empty? %>
                  <%= topic.created_at.strftime("%I:%M%p %m/%d/%y") %>
                <% else %>
                  <%= topic.replies.last.created_at.strftime("%I:%M%p %m/%d/%y") %>
                <% end %>
                </td>
              </tr>  
            <% end %>

Так что, в основном, если ответы пусты, вы тянете, когда тема создана.Если есть ответы, потяните, когда последний был создан.Это чудесно отображается в представлении show section, но я понятия не имею, как сортировать, используя это.

Я попытался создать метод в модели темы под названием «last_updated».Я написал это так:

  def last_update(sectionTopic)
if sectionTopic.replies.empty?
  return sectionTopic.created_at
else
  return sectionTopic.replies.last.created_at
end

end

И передал его через представление:

<% @section.topics.sort_by{ |topic| topic.last_update(@section.topics)}.each do |topic| %>

Но я получаю неопределенный метод "ответы", когда яэтот.Есть идеи?Спасибо.

1 Ответ

0 голосов
/ 06 марта 2011

Из того, что я могу сказать,

topic.last_update(@section.topics)

должно быть:

topic.last_update(topic)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...