mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Rails - jpmobile でリダイレクト!

[ プログラミング ] [ Rails, Ruby ]

こんばんは。

当方の Ruby on Rails 製ホームページは、先日 jpmobile でスマートフォン対応しました。

携帯電話からのアクセスは需要が少ないと見込んで非対応としております。

しかし、携帯電話からのアクセスの際に無条件に PC 用ページが表示されてしまっては不親切ですので、携帯電話からアクセスされた場合は別途メッセージを表示させるようにしました。

Rails のコントローラ側で redirect_to を使用するのですが、それについて記録しておきます。

0. 前提条件

1. コントローラ編集

各コントローラ内でフィルタ設定を行う。

【リダイレクト先にコントローラを指定する場合】

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 を指定する場合】

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? で携帯電話からのアクセスかどうかのみを判定しているが、携帯キャリア別に処理をしたいのなら以下のようにすればよい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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