У меня есть приложение Rail 3.2.2 с Devise 2.0, с которым я начал включать мобильные представления. Я использую before_filter
в моем application_controller.rb
для использования мобильного макета следующим образом:
before_filter :adjust_format_for_mobile
private
def adjust_format_for_mobile
if request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(iPhone|iPod)/]
request.format = :mobile
end
end
У меня есть тип MIME, определенный в initializers/mime_types
:
Mime::Type.register_alias "text/html", :mobile
Всякий раз, когда я пытаюсь получить доступ к root_path
, как определено в routes.rb
:
root :to => "wells#index"
(который защищен через before_filter :authenticate_user!
)
Все, что отображается, это флэш-сообщение Devise (без HTML):
You need to sign in or sign up before continuing
У меня есть необходимый мобильный макет, что мне здесь не хватает? Поведение в настольной версии заключается в том, что вы перенаправлены на new_user_session_path
, почему это не так?
EDIT:
Журнал консоли выглядит следующим образом:
Started GET "/" for 127.0.0.1 at 2012-03-21 17:07:35 -0500
Processing by WellsController#index as HTML
Completed 401 Unauthorized in 0ms
Кроме того, это происходит только с этим конкретным путем (корневым путем). Если я вручную захожу в users / sign_up или users / sign_in, это работает отлично. Затем я могу войти, и все работает нормально.