I need some help here.
I'm using the Devise gem for authentication and I've set up my routes as follow
Rails.application.routes.draw do
devise_for :users, path: '', path_names: { sign_in: 'login', sign_out: 'logout', sign_up: 'join', password: 'forgot-password', edit: 'settings'}
root to: 'pages#index'
end
I am then using a different layout file for all devise views
class ApplicationController < ActionController::Base
layout :layout_by_resource
private
def layout_by_resource
if devise_controller? && resource_name == :user
"devise_custom"
else
"application"
end
end
end
This works fine but I would like to make an exception for devise users/edit. So that the registrations edit action uses the application layout instead.
Please anyone, how can I achieve this?
Thanks in advance!
/ Jacob
According with this section , you can do something like this
class ApplicationController < ActionController::Base
# Layout per resource_name
def layout_by_resource
if devise_controller? && resource_name == :admin
"layout_name_for_devise_admin"
else
"application"
end
end
# Layout per resource_name AND action
def layout_by_resource
if devise_controller? && resource_name == :user && action_name == "new"
"layout_name_for_devise"
else
"application"
end
end
end
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.