Разработайте макеты для ресурсов SignedIn и Signed - PullRequest
1 голос
/ 24 октября 2010

Мое приложение имеет два состояния пользовательского интерфейса: - Вошел - Выписан

Я использовал следующее, чтобы определить, какое приложение / представление / макет использовать на основе того, вошел ли пользователь в Devise или нет:

  # Devise, way of using a different Layout for all the devise/non-signed in Views
  layout :layout_by_resource
  def layout_by_resource
    if devise_controller?
      "application_unauthorized"
    else
      "application"
    end
  end

Проблема в том, что когда вы вошли в систему, используется неверный макет? идеи?

Я хочу использовать «application_unauthorized», только если он разработан и пользователь не вошел в систему.

Ответы [ 2 ]

5 голосов
/ 24 октября 2010

На самом деле вы должны использовать метод user_signed_in?, чтобы проверить, вошел ли пользователь в систему. Я заметил, что current_user? может вернуть true, даже если пользователь в данный момент не вошел в систему.

Итак, ваш код будет выглядеть примерно так:

layout :layout_by_resource
def layout_by_resource
  if user_signed_in?
    "application"
  else
    "application_unauthorized"
  end
end
4 голосов
/ 24 октября 2010

Лично я бы проверил, используя if current_user? вместо devise_controller?

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