繁体   English   中英

Rails 3 sort_by并发症

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM