Search code examples
ruby-on-railsdevise

How to set a specific rails layout to a view?


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?


Solution

  • Stolen from this API page

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