【发布时间】:2011-07-09 15:11:20
【问题描述】:
所以我有一个论坛应用程序和双重嵌套资源。 Section-->Topic-->Replies 并在应用程序控制器中设置(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 %>
所以基本上如果回复是空的,你会在创建主题时拉取。如果有回复,请在创建最后一个回复时拉取。这在显示部分视图中显示得非常好,但我不知道如何使用它进行排序。
我尝试在主题模型中创建一个名为“last_updated”的方法。我是这样写的:
def last_update(sectionTopic)
if sectionTopic.replies.empty?
return sectionTopic.created_at
else
return sectionTopic.replies.last.created_at
end
结束
并通过视图传入:
<% @section.topics.sort_by{ |topic| topic.last_update(@section.topics)}.each do |topic| %>
但是当我这样做时,我得到了一个未定义的方法“回复”。有任何想法吗?谢谢。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 sorting