所以我有一个论坛应用程序和双嵌套资源。部分 - >主题 - >回复并在应用程序控制器(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 sections视图中显示得非常好,但我不知道如何使用它进行排序。
我尝试在名为“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| %>
但是当我这样做时,我得到一个未定义的方法`回复'。有任何想法吗?谢谢。
答案 0 :(得分:0)
据我所知,
topic.last_update(@section.topics)
应该是:
topic.last_update(topic)