Ruby on Rails
Sunday, March 22, 2015
Okay. Here is the solution
In ApplicationController:
before_filter do @main_menu = Page.where(active: true, show_in_main_menu: true).arrange(order: :position) def menu_ids(attributes, mids = []) attributes.map do |attribute, sub_attributes| if sub_attributes.empty? mids << attribute.id.to_s else mids << attribute.id.to_s menu_ids(sub_attributes, mids) end end mids end @menu_ids = menu_ids(@main_menu) endIn ApplicationHelper:
def main_menu(attributes) attributes.map do |attribute, sub_attributes| if sub_attributes.empty? if @menu_ids.include?(attribute.parent_id.to_s) content_tag(:li) do link_to attribute.name.html_safe, page_path(attribute._id) end end else if attribute.parent_id == nil content_tag(:li, nil, class: "dropdown") do begin link_to( attribute.name.html_safe, page_path(attribute._id))+ (icon('angle-double-right') if !attribute.is_root?)+ content_tag(:ul, nil) do main_menu(sub_attributes) end end.html_safe end else if @menu_ids.include?(attribute.parent_id.to_s) content_tag(:li, nil, class: "dropdown") do begin link_to( attribute.name.html_safe, page_path(attribute._id))+ (icon('angle-double-right') if !attribute.is_root?)+ content_tag(:ul, nil) do main_menu(sub_attributes) end end.html_safe end end end end end.join.html_safe endAnd it finally works like I wanted
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/e5932e67-dfd1-40a9-9523-090e408b6924%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment