Hi all
I want to build up a basic menu system for my application. Each
''section'' has it''s own left hand menu and I was
planning on handling
that by defining a ''menu'' method within each controller, which
I''d
pass (along with any other menus I needed at that point) in an
instance variables called @menus. So I''d get something like
def menu
{:title => ''Vehicles'',
:items => [
link_to(''List all'', :action =>
''index''),
link_to(''Search'', :action =>
''search''),
link_to(''Do something else'', :action =>
''bang''),
]
}
end
def list
@menus = [self.menu]
end
My application layout looks for @menus and displays the menus in the
left hand side. Problem is I can''t access link_to from my controller
as it''s a helper. The FAQ mentions writing your own helpers within
the controller but in this case I want to access a default helper
from the controller.
Question 1: Why is there this restriction?
Question 2: How do I get around it? :)
Many thanks for any suggestions. I''ve got ''The Book''
so if there are
clues in there I''ve missed I''m happy for page numbers. Or if I
am
just doing it the wrong way - educate me as to the right way please.
Many thanks once again
Ian Cottee
Blue Fountain Systems Ltd
I''m going to restate my problem as I don''t think I understand what a helper is anymore. I now know this. 1. I can''t call link_to from within a controller because it''s a helper. OK. Clear. 2. If I define my menu within a helper, I can call that helper directly through my view but not a controller. OK. Clear. 3. I can call paginate from within a controller - even though it''s a helper. Hmmm. Not clear. So what''s the distinction between paginate and link_to? Ian On 15 Nov 2005, at 00:12, Ian J Cottee wrote:> Hi all > > I want to build up a basic menu system for my application. Each > ''section'' has it''s own left hand menu and I was planning on > handling that by defining a ''menu'' method within each controller, > which I''d pass (along with any other menus I needed at that point) > in an instance variables called @menus. So I''d get something like > > def menu > {:title => ''Vehicles'', > :items => [ > link_to(''List all'', :action => ''index''), > link_to(''Search'', :action => ''search''), > link_to(''Do something else'', :action => ''bang''), > ] > } > end > > def list > @menus = [self.menu] > end > > My application layout looks for @menus and displays the menus in > the left hand side. Problem is I can''t access link_to from my > controller as it''s a helper. The FAQ mentions writing your own > helpers within the controller but in this case I want to access a > default helper from the controller. > > Question 1: Why is there this restriction? > Question 2: How do I get around it? :) > > Many thanks for any suggestions. I''ve got ''The Book'' so if there > are clues in there I''ve missed I''m happy for page numbers. Or if I > am just doing it the wrong way - educate me as to the right way > please. > > Many thanks once again > > Ian Cottee > Blue Fountain Systems Ltd > > > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails
you may want to look at render partials http://rails.rubyonrails.com/classes/ActionController/Base.html#M000171 On 11/14/05, Ian J Cottee <icottee-VRzI2sOoAJZhO+d2hxs5qQ@public.gmane.org> wrote:> > Hi all > > I want to build up a basic menu system for my application. Each > ''section'' has it''s own left hand menu and I was planning on handling > that by defining a ''menu'' method within each controller, which I''d > pass (along with any other menus I needed at that point) in an > instance variables called @menus. So I''d get something like > > def menu > {:title => ''Vehicles'', > :items => [ > link_to(''List all'', :action => ''index''), > link_to(''Search'', :action => ''search''), > link_to(''Do something else'', :action => ''bang''), > ] > } > end > > def list > @menus = [self.menu] > end > > My application layout looks for @menus and displays the menus in the > left hand side. Problem is I can''t access link_to from my controller > as it''s a helper. The FAQ mentions writing your own helpers within > the controller but in this case I want to access a default helper > from the controller. > > Question 1: Why is there this restriction? > Question 2: How do I get around it? :) > > Many thanks for any suggestions. I''ve got ''The Book'' so if there are > clues in there I''ve missed I''m happy for page numbers. Or if I am > just doing it the wrong way - educate me as to the right way please. > > Many thanks once again > > Ian Cottee > Blue Fountain Systems Ltd > > > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails >_______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails
Thanks Chris
I took a look but I was trying to avoid creating a partial for each
menu (which I think this method implies). What I ended up doing was
keeping my menu definitions in the controller (which I believe is the
right place for it). It looks something like
def menu
{:title => ''Vehicles'',
:items => [
{:title => ''New Vehicle'', :params => {:action
=> ''new''}},
{:title => ''List Vehicles'', :params => {:action
=> ''list''}}
]
}
end
def menus
[self.menu]
end
And then in my views I do a <% @menus = controller.menus %>
Finally, my application.rhtml layout looks for @menus to be defined
and does the necessary to render it to the menu format I want.
Many thanks for the feedback
Ian
On 15 Nov 2005, at 15:43, Chris Hall wrote:
> you may want to look at render partials
>
> http://rails.rubyonrails.com/classes/ActionController/
> Base.html#M000171
>
> On 11/14/05, Ian J Cottee
<icottee-VRzI2sOoAJZhO+d2hxs5qQ@public.gmane.org> wrote: Hi all
>
> I want to build up a basic menu system for my application. Each
> ''section'' has it''s own left hand menu and I was
planning on handling
> that by defining a ''menu'' method within each controller,
which I''d
> pass (along with any other menus I needed at that point) in an
> instance variables called @menus. So I''d get something like
>
> def menu
> {:title => ''Vehicles'',
> :items => [
> link_to(''List all'', :action =>
''index''),
> link_to(''Search'', :action =>
''search''),
> link_to(''Do something else'', :action =>
''bang''),
> ]
> }
> end
>
> def list
> @menus = [self.menu]
> end
>
> My application layout looks for @menus and displays the menus in the
> left hand side. Problem is I can''t access link_to from my
controller
> as it''s a helper. The FAQ mentions writing your own helpers within
> the controller but in this case I want to access a default helper
> from the controller.
>
> Question 1: Why is there this restriction?
> Question 2: How do I get around it? :)
>
> Many thanks for any suggestions. I''ve got ''The
Book'' so if there are
> clues in there I''ve missed I''m happy for page numbers. Or
if I am
> just doing it the wrong way - educate me as to the right way please.
>
> Many thanks once again
>
> Ian Cottee
> Blue Fountain Systems Ltd
>
>
> _______________________________________________
> Rails mailing list
> Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org
> http://lists.rubyonrails.org/mailman/listinfo/rails
>
> _______________________________________________
> Rails mailing list
> Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org
> http://lists.rubyonrails.org/mailman/listinfo/rails