Home > Software engineering >  How to set a specific rails layout to a view?
How to set a specific rails layout to a view?

Time:10-26

I have the following controller for invitations provided by devise_invitable

class InvitationsController < Devise::InvitationsController
 
  layout 'devise', only: [:edit]
  layout "admin", only: [:new]

  ..........code.........
end

In a nutshell, I want the code to display the admin layout on the new action and the devise default layout on edit. I'd expect for the above code to work but what I've found is that the last layout call that I make clobbers everything. The above snippet will render admin for all actions and when I switch them around then the devise layout will clobber everything. I don't understand why that is.

I'm looking at this devise wiki here but I'm having no luck. What could I be doing wrong here?

CodePudding user response:

Stolen from this API page

class ApplicationController < ActionController::Base
 layout :determine_layout
 def determine_layout
   if is_admin?
     "admin"
   else
     "application"
   end
...
end
  • Related