Rails & Devise: Как отобразить страницу входа без макета? - PullRequest
54 голосов
/ 10 декабря 2010

Я знаю, что это, вероятно, простой вопрос, но я все еще пытаюсь выяснить Разработать out ...

Я хочу render :layout => false на моей странице входа в систему;как я могу сделать это с Devise ?

Ответы [ 3 ]

103 голосов
/ 10 декабря 2010

Вы можете создать подкласс контроллера и настроить маршрутизатор на использование этого:

class SessionsController < Devise::SessionsController
  layout false
end

И в config/routes.rb:

devise_for :users, :controllers => { :sessions => "sessions" }

Вам необходимо переместить сеансовые представления на этот контроллертоже.

ИЛИ сделать метод в app/controllers/application_controller.rb:

class ApplicationController < ActionController::Base

  layout :layout

  private

  def layout
    # only turn it off for login pages:
    is_a?(Devise::SessionsController) ? false : "application"
    # or turn layout off for every devise controller:
    devise_controller? && "application"
  end

end
36 голосов
/ 05 сентября 2011

Вы также можете создать файл sessions.html.erb в app / views / layouts / devise.Затем этот макет будет использоваться только для входа на экран.

8 голосов
/ 07 августа 2013

Используя devise_controller?помощник, вы можете определить, когда контроллер Devise активен и реагировать соответственно.Чтобы Devise использовал отдельный макет для остальной части вашего приложения, вы можете сделать что-то вроде этого:

class ApplicationController < ActionController::Base
  layout :layout_by_resource

  protected

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

создать файл devise.html.erb в ваших представлениях / макетах

Такесли его контроллер устройства будет отображать макет устройства, иначе макет приложения

из: https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...