Railsでスマートフォン用ページへの振り分け
Railsで作成したWebサイトをスマートフォンから閲覧してみたら、
ひどくスタイルが崩れていたので、スマートフォン用のページを
別途作ることにした。
その際に必要なことは外部からのアクセスがPCからなのか、スマート
フォンなのかという振り分け。
スマートフォンからのアクセスであれば、スマフォ用のページへ誘導する。
流れ的には
- スマフォ用のページのコントローラを作成
- コントローラとビューを設定
- ルートを設定
- メインのコントローラに振り分けメソッドを追加
以上。
今回はmobilesというコントローラを作成した。
rails generate controller mobilescreate app/controllers/mobiles_controller.rb
invoke erb
create app/views/mobiles
invoke rspec
create spec/controllers/mobiles_controller_spec.rb
invoke helper
create app/helpers/mobiles_helper.rb
invoke rspec
create spec/helpers/mobiles_helper_spec.rb
invoke assets
invoke coffee
create app/assets/javascripts/mobiles.js.coffee
invoke scss
create app/assets/stylesheets/mobiles.css.scss
各ファイルに追記。
- controllers/mobiles_controller
class MobilesController < ApplicationController
def index
end
end
- views/mobiles/index.html.erb
Sorry. This application is not applied to mobile devices.
Operating environment is on PC.
今回は推奨環境はPCですという通知を掲載した。
−routes.rb
resoures mobiles
mobilesというルーティングを設定。
- アクセスを受け付けるコントローラ。
before_filterにより、コントローラが呼び出される際に、
一度アクセスの振り分けを行う設定。
request.env["HTTP_USER_AGENT"]でアクセス元がどの
機器からのアクセスなのかを取得できる。
MobileとAndroidと文字列が含まれていれば、それを
モバイルとして判断し、ビューを振り分ける。
Ruby1.9.3 ,Rails3.2.13だが、今後汎用的に使う機会がありそう。