Rails - jpmobile でリダイレクト!
Updated:
当方の Ruby on Rails 製ホームページは、先日 jpmobile でスマートフォン対応しました。
携帯電話からのアクセスは需要が少ないと見込んで非対応としております。
しかし、携帯電話からのアクセスの際に無条件に PC 用ページが表示されてしまっては不親切ですので、携帯電話からアクセスされた場合は別途メッセージを表示させるようにしました。
Rails のコントローラ側で redirect_to
を使用するのですが、それについて記録しておきます。
0. 前提条件
- 使用する Rails は 4.0.0 を想定。
- jbmobile インストー済み。
(「Rails - jpmobile で携帯・スマホ対応!」を参照)
1. コントローラ編集
各コントローラ内でフィルタ設定を行う。
【リダイレクト先にコントローラを指定する場合】
File: top_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class TopController < ApplicationController
# フィルタを追加
before_filter :redirect_if_mobile
def index
end
private
# リダイレクト
def redirect_if_mobile
# コントローラを指定する場合
redirect_to :controller => 'mobile' if request.mobile?
end
end
【リダイレクト先に直接 HTML を指定する場合】
File: top_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class TopController < ApplicationController
# フィルタを追加
before_filter :redirect_if_mobile
def index
end
private
# リダイレクト
def redirect_if_mobile
# 直接 HTML を指定する場合
redirect_to "http://www.mk-mode.com/rails/mobile.html" if request.mobile?
end
end
【補足】
上記は request.mobile?
で携帯電話からのアクセスかどうかのみを判定しているが、携帯キャリア別に処理をしたいのなら以下のようにすればよい。
case request.mobile
when Jpmobile::Mobile::Docomo
# docomo 用処理
when Jpmobile::Mobile::Au
# au 用処理
when Jpmobile::Mobile::Softbank
# SoftBank 用処理
when Jpmobile::Mobile::Willcom
# Willcom 用処理
when Jpmobile::Mobile::Emobile
# EMOBILE 用処理
else
# 上記に当てはまらなかった場合の処理
end
2. リダイレクト先準備
リダイレクト先にコントローラを指定する場合は、当然該当のコントローラ、ビューを作成する。
直接 HTML を指定する場合は、当然該当の HTML ファイルを作成する。
当方の場合、携帯電話から Rails サイトにアクセスがあった場合にメッセージを表示させるだけにした。
簡単な HTML ファイル作成し、 “public” ディレクトリに配置した。
参考サイト
当方の Ruby on Rails 製ホームページでは、各種情報を公開しています。
少しずつでもアクセス数が増えることを期待しています。
以上。
Comments