Forum: Ruby on Rails Sub controllers?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ab3bd127ce5e35766919bbf19efb4d67?d=identicon&s=25 Neil Middleton (neilmiddleton)
on 2009-04-01 11:04
I'm pretty new to Rails and have an issue which I can't quite get my
head around as to the architecturally 'correct' way of doing it.

Problem relates to what I kinda call sub-controllers. The scenario is
this:

I have a series of pages, on which is a panel of some form containing
some information (think the user panel on gitHub top right).

So, in my app, I have controllers that generate the data for the pages
and render out the responses which is fine, but when it comes to this
panel, it seems to me that you would want some sort of controller action
dedicated to generating this panel and it's view.

Question is, how do you go about doing this?  How do I render a 'sub
controller' from within a view?
00e8233b7817ac14040f7928e6d4b889?d=identicon&s=25 John Yerhot (Guest)
on 2009-04-01 19:02
(Received via mailing list)
Hey Neil,

Well, I'd go about it with a partial for the actual view part.  If you
simply need to just display it on a couple of actions, use a
before_filter to call a method that sets variables only on those
actions which require the submenu... then in your layout or view check
that the variable is set and render the partial.

Otherwise, if you have a authentication system, set the variables in
there.  restful_authentication does this by providing logged_in? and
current_user for you.

Hope that makes sense.  :)

John


On Apr 1, 4:04 am, Neil Middleton <rails-mailing-l...@andreas-s.net>
Ab3bd127ce5e35766919bbf19efb4d67?d=identicon&s=25 Neil Middleton (neilmiddleton)
on 2009-04-02 02:39
(Received via mailing list)
it does partly - although I'm thinking more generically. For instance,
let's
take the navigation for an app where it's state is dependant on some
data in
the DB.  I don't really want my page action to have to know anything
about
the nav at all, as that's the layouts job to know what's on the page,
but I
require a controller to provide the navigation with data.
From what I understand of partials these are kinda headless in that they
render a given variable, but don't have any interaction with the
controller
per se.

How do I go about rendering in this way? How do I let the layout kick of
code to render chunks of a page that contain data without contaminating
my
page actions?

Neil

On Wed, Apr 1, 2009 at 6:01 PM, John Yerhot <joyerhot@gmail.com> wrote:

> there.  restful_authentication does this by providing logged_in? and
> > head around as to the architecturally 'correct' way of doing it.
> > dedicated to generating this panel and it's view.
> >
> > Question is, how do you go about doing this?  How do I render a 'sub
> > controller' from within a view?
> > --
> > Posted viahttp://www.ruby-forum.com/.
> >
>


--
Neil Middleton
6fabb84e727dee98d1277df56458cbac?d=identicon&s=25 Andrew Bloom (Guest)
on 2009-04-02 07:04
(Received via mailing list)
You can use some inheritance and before_filters to handle this.

class ApplicationController < ActionController::Base
    def load_panel_data
        @data = Data.all
    end
end

class OtherController < ActionController::Base
    before_filter :load_panel_data

    ... your normal actions ...
end

In your layout you can now render a partial that is expecting the
@data variable. before_filters are inheritable and configurable.
http://api.rubyonrails.org/classes/ActionControlle...
This topic is locked and can not be replied to.