[Rails] Railsで携帯サイトを作る時のまとめ

携帯サイトを作る際のまとめを記載しておく

携帯からのアクセスの時には、jpmobileを使用する

jpmobileを使用すると携帯からのアクセスの時、コントローラーを切り替えられたり、session_idをURLに付与する事ができ、InvalidAuthenticityTokenエラーを防げたりする。

http://d.hatena.ne.jp/shohu33/20080825

携帯からのアクセスの際にコントローラ切り替え

http://d.hatena.ne.jp/darashi/20061031/1162236300

あらかじめ携帯のコントローラーを作っておき、携帯からのアクセス時にリダイレクトするようにする。これはjpmobileがインストールされている事を前提とする。

以下引用

class PcController < ApplicationController
  before_filter :redirect_for_mobile

  private
  def redirect_for_mobile
    if request.mobile?
      pa = params.dup
      pa[:controller] = "/mobile"
      redirect_to pa
    end
  end
end

文字コード対応

http://d.hatena.ne.jp/darashi/20061031/1162236300
以下引用

一部機種ではUTF-8HTMLは正しく表示できないようです。after_filterを使うと、出力の段階で文字コードを変換できるので便利かもしれません。
-----
class MobileController < ApplicationController
  after_filter :to_sjis

  private
  def to_sjis
    @headers["Content-Type"] = "text/html; charset=Shift_JIS"
    response.body = response.body.tosjis
  end
end
-----

バリデータエラー時のDIVタグをSPANタグに変える

これは特に変えなくてもよいのですが、バリデートエラー時にDIVタグだと勝手に改行されたりと、画面が崩れあまり好ましくないのでspanタグにかえるというもの

参考URL
http://d.hatena.ne.jp/moro/20051108/1131448716

config.action_view.field_error_procでバリデーションエラー時にラップされるHTMLらしいので、これを変更する

config/environments.rb

Rails::Initializer.run do |config|
     :
  config.action_view.field_error_proc =
     lambda{|tag, instance| "<span class=\"fieldWithErrors\">#{tag}</span>" }
     :
end