1

特定のページのすべての子を一覧表示する次のコードがあります。

  <ul class="sidenav">
    <%= render :partial => '/refinery/menu_branch', 
      :collection => refinery_menu_pages.select{|p| p.parent_id == @page.root.id},
      :locals => {
        :hide_children => false,
        :apply_css => true 
      } -%>
  </ul>

e.g.

Item1
  cItem1
  cItem2

子ページの子を表示するようにコードを変更するにはどうすればよいですか?たとえば:

Item1
 cItem1
 cItem2
   ccItem1
   ccItem2
   ccItem3
Item2
4

1 に答える 1

1

このコードは再帰的であるため、まだ複数のレベルが表示されていないことに驚きました。つまり、menu_branch パーシャルは、子が nil になるまで menu_branch パーシャルを呼び出します。

RefineryCMS 2.0 の _menu_branch パーシャルのコードは次のとおりです。

<%= render :partial => '/refinery/menu_branch', :collection => children,
                 :locals => {
                   :apply_css => local_assigns[:apply_css],
                   :hide_children => !!hide_children,
                   :menu_levels => local_assigns[:menu_levels]
                 } -%>

これには :menu_levels が含まれていることに注意してください。代わりにそれをコピーして貼り付けるか、local_assigns[:menu_levels]表示するレベルの数を整数に置き換えることができます。

于 2013-04-15T02:21:17.870 に答える