如何在rails视图中按字母顺序对列表进行排序

时间:2014-07-10 11:50:13

标签: ruby-on-rails sorting

我正在生成一个中心列表,但由于这些中心是自治市镇的孩子,我想知道如何在视图中按字母顺序对迭代进行排序。

我的代码看起来像这样

        <% boroughs.each do |borough|%>
          <% if borough.leisure_centres.any? %>
            <% borough.leisure_centres.each do |venue| %>
            <li class="sitemap-accordion">
              <%= link_to venue.title, '#', class: "trigger" %>
                <ul class="sitemap-accordion-child">
                  <li>
                    <%= link_to "Overview", centre_path(venue) %>
                  </li>
                  <li>
                    <%= link_to 'News', centre_news_index_path(venue) %>
                  </li>
                  <li>
                    <%= link_to 'Facilities', facilities_centre_path(venue) %>
                  </li>
                  <li>
                    <%= link_to 'Contact Us', new_centre_contact_form_path(venue) %>
                  </li>
                  <% unless venue.venue_hire_content.nil? %>
                    <li>
                      <%= link_to 'Hire', venue_hire_centre_path(venue) %>
                    </li>
                  <% end %>
                  <% unless venue.virtual_tour.nil? %>
                    <li>
                      <%= link_to 'Virtual Tour', tour_centre_path(venue) %>
                    </li>
                  <% end %>
                  <% unless venue.custom_pages.nil? %>
                    <% venue.custom_pages.each do |custom_page| %>
                      <li>
                        <%= link_to custom_page.title, centre_custom_page_path(centre_id: venue, id: custom_page.id) %>
                      </li>
                    <% end %>
                  <% end %>
                </ul>
              <% end %>
            </li>
          <% end %>
        <% end %>

我希望venue.title按字母顺序排列,我该怎么做?

由于

2 个答案:

答案 0 :(得分:2)

你可以像这样将一个块传递给sort_by方法。

<% borough.leisure_centres.sort_by(&:title).each do |venue| %>

答案 1 :(得分:2)

我愿意

Rails 4

class Borough < ActiveRecord::Base
  has_many :leisure_centres, -> { order "title asc" }
end

Rails 3

class Borough < ActiveRecord::Base
  has_many :leisure_centres, :order => "title asc"
end

所以你要通过SQL排序而不是ruby。