I’ve created a number of controllers & views under an ‘admin’ namespace, but they are still pulling from the application layout. how can I make a layout that applies to all the views in the namespaced routes, and still use the current layout for the other pages?
I’ve created a number of controllers & views under an ‘admin’ namespace, but they
Share
Generally speaking, Rails will use the application layout if there isn’t a layout that matches the controller. For example, if you had a PeopleController, Rails would look for layouts/people.html.erb and if it didn’t find that, application.html.erb.
You can explicitly specify a specific layout if you want to override this convention.
That controller will then use some_layout.html.erb rather than looking for people.html.erb and application.html.erb.
But this might be a better way if you’re looking to group things: If you have a base AdminController that inherits from ApplicationController, you can have your, say, Admin::PersonController inherit from the AdminController and it will inherit the admin layout.
I don’t know the specifics of your code, but you might have:
The one thing to realize is that Admin::PeopleController will inherit any actions that AdminController has defined (just as anything defined in ApplicationController becomes available in all sub-classes). This isn’t generally a problem since you’ll likely be overwriting the methods anyway, but just to be aware of it. If you don’t have an AdminController, you can make one with no actions just for the purposes of the layout.