Hello, I''m still dtarting with ruby on rails. And I''m trying to have a menu depending on the current controller/method. Here is what I was thinking of (please tell me if there''s a better way to do it): I have a database with menu_groups (corresponding to controllers) and menu_elements(corresponding to methods). Each menu_element belongs to one menu_group. I created a class Menu where I get all the menu_groups and menu_elements, and where I have the active controller and method. " class Menu attr_reader :menu_groups attr_reader :menu_group_active attr_reader :menu_elements attr_reader :menu_element_active def initialize current_url_elements=request_uri().split("/") @menu_groups << MenuGroup.find(:name,:order => "id") @menu_group_active = controller.controller_name @menu_elements << MenuElement.find(:all,:order => "menu_group_id id") @menu_elements_active = current_url_elements[-1] end end " Then, thanks to the attributes of this class I''ll be able in my layout to make the difference between active and non active groups/elements. The problem here is that I don''t know how to get the url into a variable... If my method is good, can you please tell me how to make it works? If not, can you show me the right way to do this?? Thanks a lot Best regards, Matthieu -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Matthieu
2007-Jan-25 20:18 UTC
Re: How to change the menu depending on the controller/metho
I add something: I have one common layout for all my controllers. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Unless I am missing something...Make layouts out of your menus then do something like this In your controllers or even your application.rb layout :select_layout then this method at the end of your controller private def select_layout [''action_name1'', ''action_name2''].include?(action_name) ? "layout1" : "layout2" end Storing references to a menu in a DB seems wrong. Help that helps. On Jan 25, 12:18 pm, Matthieu <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> I add something: > > I have one common layout for all my controllers. > > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Matthieu
2007-Jan-25 21:08 UTC
Re: How to change the menu depending on the controller/metho
Kim wrote:> Make layouts out of your menusDo you mean, I have to do one layout for every situation my menu will be in (=the number of method I''ll have)?? It seems a lot to me and maybe I''m wrong but it would induce a lot of redundency, no?> > In your controllers or even your application.rb > layout :select_layout > > then this method at the end of your controller > private > def select_layout > [''action_name1'', ''action_name2''].include?(action_name) ? "layout1" > : "layout2" > end >what does ''action_name'' represent ? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
No - you make a layout for the menu - how many menus do you have? Your menu should retain a consistant look across most of your controllers/actions - unless I am not understanding something. I don''t understand what you mean by "the situation my menu will be in (=the number of method I''ll have)" If you mean, for example, that you want the "comments" menu item to be a different color when you are performing that action then use CSS and helper methods like link_to_unless_current amongst others. It seems like you might want to read some ofthe multiple of books this list preaches about. def select_layout> > [''action_name1'', ''action_name2''].include?(action_name) ? "layout1" > > : "layout2" > > endwhat does ''action_name'' represent ?action_name is the name of the action that should use layout1. On Jan 25, 1:08 pm, Matthieu <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Kim wrote: > > Make layouts out of your menusDo you mean, I have to do one layout for every situation my menu will be > in (=the number of method I''ll have)?? > It seems a lot to me and maybe I''m wrong but it would induce a lot of > redundency, no? > > > > > In your controllers or even your application.rb > > layout :select_layout > > > then this method at the end of your controller > > private > > def select_layout > > [''action_name1'', ''action_name2''].include?(action_name) ? "layout1" > > : "layout2" > > endwhat does ''action_name'' represent ? > > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---