配置所有Devise控制器以使用不同的布局?

时间:2014-04-08 17:16:25

标签: ruby-on-rails layout devise controller

我有一个Rails应用程序,应用程序布局用于呈现AngularJS应用程序。但是,我希望所有Devise控制器都使用另一种布局。我不需要Angular。

如何告诉Devise为其所有控制器使用不同的布局?

1 个答案:

答案 0 :(得分:4)

您可能应该查看此条目:How To: Create custom layouts

或多或少,您可以通过ApplicationController

进行设置
class ApplicationController < ActionController::Base
  layout :layout_by_resource

  protected

  def layout_by_resource
    if devise_controller?
      "layout_name_for_devise"
    else
      "application"
    end
  end
end

或通过配置(config / application.rb):

config.to_prepare do
  Devise::SessionsController.layout "devise"
  Devise::RegistrationsController.layout proc{ |controller| user_signed_in? ? "application" : "devise" }
  Devise::ConfirmationsController.layout "devise"
  Devise::UnlocksController.layout "devise"            
  Devise::PasswordsController.layout "devise"        
end