[英]Rails 3 sort_by complications
所以我有一个论坛应用程序和双重嵌套资源。 部分->主题->答复,并在应用程序控制器中进行了这样的设置(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| %>
但是当我这样做时,我得到一个未定义的方法“答复”。 有任何想法吗? 谢谢。
据我所知
topic.last_update(@section.topics)
应该:
topic.last_update(topic)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.