fc2ブログ

2023.08 «  - - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 » 2023.10
TOP > Rails 2.0・その5(view ファイル名振り分けカスタマイズ・携帯キャリアごと振り分けの例)

 ← Rails 2.0・その6(:actionの指定をいちいちしなくてもおk) | TOP | Rails 2.0・その4(erb のファイル名が変わりました)

Rails 2.0・その5(view ファイル名振り分けカスタマイズ・携帯キャリアごと振り分けの例)  

2008年02月02日 ()
自分でカスタマイズして、view ファイル名の読み込みを振り分けることができます。

例えば、ケータイ(DoCoMo, au, softbank)ごとに view のファイルを変えたいわよ、なんて時は、以下のようにすると吉でしょう!

今回はコントローラの名前の例として「Mobiles」を使いますが、これは何の名前でもよかよ!


config/initializers/mime_types.rb に以下を書き加える。

Mime::Type.register_alias "text/html", :docomo
Mime::Type.register_alias "text/html", :au
Mime::Type.register_alias "text/html", :softbank



app/controllers/application.rb に以下を書き加える。

  before_filter :mobi_filter

  def mobi_filter
    if /\ADoCoMo/ =~ request.env["HTTP_USER_AGENT"]
      request.format = :docomo
    elsif /\AKDDI|\AUP.Browser/ =~ request.env["HTTP_USER_AGENT"]
      request.format = :au
    elsif /\ASoftBank|\AMOT|\AVodafone|\AJ-PHONE/ =~ request.env["HTTP_USER_AGENT"]
      request.format = :softbank
    else
      request.format = :docomo # どれにも当てはまらないときは、とりあえず DoCoMo 扱いにする
    end
  end



※ \A という正規表現は、改行もひっくるめて文字列全体を扱った場合の本当の先頭、みたいた意味だそうですよ。


app/controllers/mobiles_controller.rb

class MobilesController < ApplicationController
  def index
    respond_to do |format|
      format.docomo
      format.au
      format.softbank
    end
  end
end



そして、

app/views/mobiles/index.docomo.erb
app/views/mobiles/index.au.erb
app/views/mobiles/index.softbank.erb

ファイルにそれぞれのキャリアの HTML を書けば良いというわけです。

うーん、結構簡単に携帯サイトに取りかかれそうですね。すごいなあ。

[追記 08/02/08]
でもよく考えてみたら、全てのコントローラに、この respond_to ~ end を書くのは、面倒ですね。

私の知恵を絞って考えたのが以下のアイディアです。もう脳みそがありませんのでマルコメ味噌を補充必須。

もっといい方法があるかもしれませんので、是非賢者のアドバイスをお願いします。

まず、respond_to ~ end を共通ルーチンとして外のファイルに押しやります。

app/helpers/mobile_switch_controller_helper.rb

module MobileSwitchControllerHelper
  def mobile_switch
      respond_to do |format|
        format.docomo
        format.au
        format.softbank
      end
  end
end



次に、このヘルパを全てのコントローラで使えるように以下の行を app/controllers/application.rb に追加します。

  include MobileSwitchControllerHelper



そいでもって、この mobile_switch メソッドを、各コントローラのメソッドの最後で呼んであげます。

app/controllers/mobiles_controller.rb

class MobiController < ApplicationController
  def index
    ・
    ・
    (なんかの処理)
    ・
    ・
    mobile_switch
  end

  def delete
    ・
    ・
    (なんかの処理)
    ・
    ・
    mobile_switch
  end
end



みたいな?(by 滝沢美和子魂)

【広告】

[2008.02.02(Sat) 21:54] [2.0]ControllerTrackback(0) | Comments(0)
↑TOPへ

 ← Rails 2.0・その6(:actionの指定をいちいちしなくてもおk) | TOP | Rails 2.0・その4(erb のファイル名が変わりました)

COMMENT

COMMENT POST















管理者にだけ表示

 ← Rails 2.0・その6(:actionの指定をいちいちしなくてもおk) | TOP | Rails 2.0・その4(erb のファイル名が変わりました)