2

Rails キャストのTree Based Navigationに従っています。

サブツリーをアルファベット順に並べたい。

私のPagesControllerには

@page_for_nav = Admin::Page.find_by_permalink!(params[:id])

によって呼び出されます

<%= render 'layouts/sub_navigation', pages: @page_for_nav.root.descendants.arrange %>

レンダリングする

<ul>
  <% pages.each do |page, children| %>
    <% if page.page_status == 'Public' %>
    <li>
      <%= link_to_unless_current page.name, "../#{page.permalink}" %>
      <%= render 'layouts/sub_navigation', pages: children if children.present? %>
    </li>
    <% end %>
  <% end %>
</ul> 

PagesController でこれを行うと失敗します (エラーは発生しません。順序が正しくありません)。

@page_for_nav = Admin::Page.order("name asc").find_by_permalink!(params[:id])

そして、これも失敗するそれぞれでこれを行う(エラーは発生せず、順序付けされないだけです)

<% pages.each.order("name asc") do |page, children| %>
4

1 に答える 1

1

:order => :nameオプションをarrangeメソッドに渡す必要があります

<%= render 'layouts/sub_navigation', pages: @page_for_nav.root.descendants.arrange(:order => :name) %>

ドキュメントを読む: https://github.com/stefankroes/ancestry#arrangement

于 2013-07-18T12:12:37.080 に答える