iOS / мобильное обнаружение с устройством - PullRequest
1 голос
/ 27 июня 2011

Таким образом, я использую обнаружение 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

1 Ответ

0 голосов
/ 28 июня 2011

удалось выяснить это сам. before_filter :format_for_mobile был до аутентификации пользователя, который исправил проблему / login.

Для / выхода из системы мне пришлось сделать следующее:

# controllers/sessions_controller.rb

class SessionsController < Devise::SessionsController
  before_filter :format_for_mobile, :except => :destroy
end
...