2012-02-15 6 views
1

特定の回数だけレンダリングするにはどうすればよいですか? トップメニューとサイドメニューには同じページがあります。トップメニューには最初の4ページだけを表示し、サイドメニューにはすべての利用可能なページを表示します。特定の回数だけレンダリングするには?

<%= render :partial => '/shared/menu_branch', :collection => roots, :locals => { 

      :hide_children => hide_children, 
      :sibling_count => (roots.length - 1), 
      :apply_css => true 
} -%> 

とmenu_branch

<% 
    if !!local_assigns[:apply_css] and (classes = menu_branch_css(local_assigns)).any? 
    css = "class='#{classes.join(' ')}'".html_safe 
    end 
    dom_id = "id='item_#{menu_branch_counter}'".html_safe if menu_branch.parent_id.nil? 
-%> 

<li<%= ['', css, dom_id].compact.join(' ').gsub(/\ *$/, '').html_safe %>> 
    <%= link_to menu_branch.title, menu_branch.url -%> 
</li> 

これは私が唯一の4回をレンダリングするラインです。

<li<%= ['', css, dom_id].compact.join(' ').gsub(/\ *$/, '').html_safe %>> 
    <%= link_to menu_branch.title, menu_branch.url -%> 
</li> 

答えて

1

わかりました。私は自分自身でそれを理解しました。これは私が変更したコードです。

<%= render :partial => '/shared/menu_branch', :collection => roots.select{|p|roots.rindex(p) < 4}, :locals => { 
       :hide_children => hide_children, 
       :sibling_count => (roots.length - 1), 
       :apply_css => true 
       } -%> 

これは私が追加したものです。

:collection => roots.select{|p|roots.rindex(p) < 4}, 
関連する問題