更改设计默认布局

时间:2012-06-18 11:51:20

标签: ruby-on-rails layout devise

我正在设法从某些方面的默认设置中显示不同的布局模板。

当用户进入登录页面时,我有此工作,但我需要显示不同的布局,以便注册,忘记密码和重置。

这是我的应用程序控制器中的当前代码:

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

3 个答案:

答案 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文件夹,您将看到需要自定义的所有表单