0

モバイルユーザーエージェントを検出して応答するために、私は使用しています

Mime::Type.register_alias "text/html", :mobile

そしてアプローチ カピバラでテストするための最良のアプローチは何だろうと思っています。この記事では、iPhone ドライバーを次のように設定することをお勧めします。 Capybara.register_driver :iphone do |app|

http://blog.plataformatec.com.br/2011/03/configuring-user-agents-with-capybara-selenium-webdriver/

しかし、URL拡張子を介してMIMEタイプが設定される、より柔軟なアプローチが欲しい

localhost/index.mobile

そして、私はこれを行うことができます

visit user_path( format: :mobile)

Rails は拡張子を理解formatし、paramsハッシュに設定しますが、URL ヘルパー メソッドを取得してすべての URL にファイル拡張子として追加するにはどうすればよいですか?

4

1 に答える 1

1

私の答えは、Railscast: http://railscasts.com/episodes/199-mobile-devicesごとにセッション変数でフォーマットを永続化することです。クエリ文字列パラメーターの代わりに URL 拡張子を使用することにしました。

ここに私のコードがありますapplication_controller.rb

def mobile_device?
  session.has_key?(:mobile) ? session[:mobile] : request.user_agent =~ /Mobile|webOS/
end
helper_method :mobile_device?

def prepare_for_mobile
  # avoid messing with .json, .xml
  if request.format == 'text/html'
    # only do this when an explicit extension is present
    case File.extname(URI.parse(request.fullpath).path)
    when '.html'
      session[:mobile] = false
    when '.mobile'
      session[:mobile] = true
    end
    # stop using a session param and go back to letting the user_agent decide
    when '.ua'
      session.delete(:mobile)
    end
    request.format = mobile_device? ? :mobile : :html
  end
end

そしてここにあるmime_types.rb

Mime::Type.register_alias "text/html", :ua      # let the user agent decide
Mime::Type.register_alias "text/html", :mobile  # mobile
于 2012-09-05T21:43:43.087 に答える