我正在设法从某些方面的默认设置中显示不同的布局模板。
当用户进入登录页面时,我有此工作,但我需要显示不同的布局,以便注册,忘记密码和重置。
这是我的应用程序控制器中的当前代码:
layout :layout
private
def layout
# only turn it off for login pages:
is_a?(Devise::SessionsController) ? "login" : "application"
# or turn layout off for every devise controller:
#devise_controller? && "application"
end
答案 0 :(得分:33)
将这行代码添加到您的application.rb:
config.to_prepare do
Devise::SessionsController.layout "your_layout_name"
Devise::RegistrationsController.layout "your_layout_name"
Devise::ConfirmationsController.layout "your_layout_name"
Devise::UnlocksController.layout "your_layout_name"
Devise::PasswordsController.layout "your_layout_name"
end
如果您想要为所有Devise视图使用相同的布局,除非用户正在编辑其数据时,您可以使用以下内容:
config.to_prepare do
Devise::SessionsController.layout "your_layout_name"
Devise::RegistrationsController.layout proc{ |controller| user_signed_in? ? "application" : "your_layout_name" }
Devise::ConfirmationsController.layout "your_layout_name"
Devise::UnlocksController.layout "your_layout_name"
Devise::PasswordsController.layout "your_layout_name"
end
有关详细信息,请参阅此article
答案 1 :(得分:31)
如果您将备用布局命名为devise.html.erb,那么gem的控制器将自然地使用它,而无需询问。保存一些代码。
答案 2 :(得分:3)
您不需要自己处理布局,只需执行以下操作:
rails generate devise:views
然后,查看views文件夹中的devise文件夹,您将看到需要自定义的所有表单