Webアプリケーションを作っていてPCとモバイル系(iPhone/iPad/Android/iOS)を判定してViewや処理を切り分けたい場面はあると思います。mobyletteはそういった場面で役立つシンプルなGemです。
このタイプのGemで有名なのは『jpmobile』です。がっつりと作りこむなら、jpmobileの方が断然オススメです。
mobyletteのメリットは、特定のUser-Agentを指定してmobileかPC表示かを切り替えるのを簡単に実装できる点だと思います!
(07/02 20:25) Rails 4.1 & Ruby 2.1.1で動作確認、viewの切り替わりの部分の記述を書き直し
🚕 Gemのインストール
いつ戻おりGemfile
に以下を追加して、bundle install
を実行してください。
gem 'mobylette' |
🐰 コントローラへの設定
Gemのインストール以外にApplicationController.rb
か個別のインストーラに次の設定を追加します。
include Mobylette::RespondToMobileRequests |
🐯 モバイルとPCでViewを切り替え
モバイル(iPhone/Android/iPad)とそれ以外(PC)を判定してViewを切り替える場合は、Controllerのメソッドで次のように記述します。
PC向け: index.html.erb モバイル向け: index.mobile.erb
また、
index.erb
としておくとviewはPC/モバイルを共通にして、かつ部分テンプレートだけhtmlとmobileを振り分けることもできます。
必要な部分だけ部分テンプレートで切り替えればいいので、viewがかなりスッキリして見やすくなります!
😎 Viewの切り替え設定
ちなみにデフォルトではモバイルにはiPhone/Android/iPadが設定されていますが、変更は簡単です。たとえば、iPadはPCと同じ画面を表示したい場合は、Controller
に次のように書きます。
mobylette_config do |config| |
すると、次のように表示が切り分けられます。
PC/iPadなど: index.html.erb モバイル(iPhone/Android): index.mobile.erb
また、Controllerに次のような設定を書くことでmobileのUser-Agent
を個別に指定することも簡単にできます。
mobylette_config do |config| |
また、次のようなヘルパーメソッドもあり、個別に処理を振り分けることも可能です。
is_mobile_request? |
🏈 処理を振り分けるメソッド
モバイルか、それ以外かで処理を切り替えるのに便利なメソッドを紹介します。
is_mobile_request? |
その他テストのやり方なども書かれています。良かったら試してみてください!
🎂 変更来歴
(07/02 20:25) Rails 4.1 & Ruby 2.1.1で動作確認、viewの切り替わりの部分の記述を書き直し