Таким образом, я использую обнаружение User Agent, чтобы обслуживать различные представления в моем приложении, обслуживая example.mobile.haml
вместо example.html.haml
. Все отлично работает, за исключением некоторых забавных вещей, происходящих с разработанными взглядами.
Когда я получаю рут как настольный UA (Safari, Mac OS), он корректно перенаправляет на / логин с флеш-памятью, когда я делаю это как мобильный UA, он не перенаправляет и отображает только флэш-память и не отображает никаких дополнительных HTML.
Аналогичным образом, нажатие / выход из системы при настольном UA корректно завершает работу и перенаправляет на / login, как и должно. Но если вы выполняете это, когда мобильный UA нажимает / выходит из системы, уничтожает ваш сеанс, но не перенаправляет.
Я следовал всем инструкциям на вики-устройстве, но это все, что не сработает. Код, который делает все обнаружение ниже:
#application_controller.rb
def format_for_mobile
request.format = :mobile if mobile_user_agent?
end
def mobile_user_agent?
request.env["HTTP_USER_AGENT"]
request.env["HTTP_USER_AGENT"][MOBILE_USER_AGENTS]
end
# config/initializers/devise.rb
config.navigational_formats = [:"*/*", "*/*", :html, :to_mobile]
# config/initializers/mobile_responder.rb
ActionController::Responder.class_eval do
alias :to_mobile :to_html
end