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)    end

In 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    end

And 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.

No comments:

Post a Comment