使用祖先gem订购子树导航

时间:2013-07-18 09:52:22

标签: ruby-on-rails ruby ruby-on-rails-3.2 ancestry

我正在关注导演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| %>

1 个答案:

答案 0 :(得分:1)

您应该将:order => :name选项传递给arrange方法

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

阅读文档:https://github.com/stefankroes/ancestry#arrangement