このページについて
その日の日記,備忘録,URLメモといった類の(おそらく内容が無い)文章を書いています.
2005.12.15(Thu)
_ after_filter と before_filter
before_filter で失敗すると after_filter を実行しない.
……のは分かるんだけど,結構困ることはあるんだよなぁ.before_filter 内でfalseを返すたびに after_filterの内容を書いておくとかだるい.どうしたらいいんだろう.(とりあえず1箇所くらいしか書くところないので放置)
_ 携帯用viewを書いたり書かなかったり
user-agentによって表示するテンプレートを変更する を見つつapplication.rbをいじってみるよ.
after_filter :output_filter_for_mobile_agent
# :
# :
def output_filter_for_mobile_agent
unless mobile?(@request)
return
end
new_template = @template.first_render + '.mobile'
new_layout = active_layout + '.mobile'
# redirect なら変更しない
if !@performed_redirect
if template_exists?(new_template) or template_exists?(new_layout)
unless template_exists?(new_template)
new_template = @template.first_render
end
unless template_exists?(new_layout)
new_layout = active_layout
end
# render結果を削除
erase_render_results
logger.info "template => #{new_template}, layout => #{new_layout}"
render :template => new_template, :layout => new_layout
else
logger.warn "template '#{r_new}' doesn't exists."
end
end
# 文字コードは Shift_JIS
@response.body = NKF::nkf('-s', @response.body)
end
render :template => welcome/index だったときに welcome/index.mobile.rhtml があればそれを参照するようにする.(layoutも同様)
mobile? は他の場所で定義してるけどこんな感じ.
MOBILE_USER_AGENT = %r{ DoCoMo
|J-PHONE
|UP.Browser
|DDIPOCKET
|ASTEL
|PDXGW
|Palmscape
|Xiino
|sharp pda browser
|MOT-
|Windows CE
|L-mode
|w3m }xi
def mobile?(request)
request.env['HTTP_USER_AGENT'] =~ MOBILE_USER_AGENT
end
[ツッコミを入れる]
[TrackBack URL: http://holy.enyou.org/d/tb.rb/20051215]
本日のリンク元
アンテナ
検索
- before_filter ×32 : .co.jpのGoogle検索 ×5, .comのGoogle検索 ×4, .co.jpのGoogle検索 ×3, .comのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, ask.jp ×2, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- after_filter ×8 : .comのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- rails after_filter ×6 : .co.jpのGoogle検索 ×2, .comのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- rails 携帯 ×6 : .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- template_exists ×3 : .co.jpのGoogle検索 ×2, .ruのGoogle検索 ×1
- before_filter after_filter ×2 : .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- Rails after_filter ×2 : .co.jpのGoogle検索
- ruby after_filter ×2 : .co.jpのGoogle検索
- Ruby before_filter ×1 : .co.jpのGoogle検索
- rails erase_render_results ×1 : .co.jpのGoogle検索
- redirect rails 携帯 ×1 : .co.jpのGoogle検索
- 桜井章一 ニュースステーション ×1 : .comのGoogle検索
- ワーキン 秋田 ×1 : .co.jpのGoogle検索
- fuckme ×1 : .comのGoogle検索
- "before_filter {" ×1 : .co.jpのGoogle検索
- rails user-agent ×1 : .co.jpのGoogle検索
- before_filter redirect ×1 : .co.jpのGoogle検索
- Regex DoCoMo ×1 : .comのGoogle検索
- before_filter with_scope ×1 : .comのGoogle検索
- after_filter template 変更 ×1 : .co.jpのGoogle検索
- after_filter nkf ×1 : .co.jpのGoogle検索
- rails after_filter 携帯 ×1 : .comのGoogle検索
- rails HTTP_USER_AGENT DoCoMo ×1 : .co.jpのGoogle検索
- ruby on rails after_filter ×1 : .co.jpのGoogle検索
- ワーキン秋田 ×1 : .co.jpのGoogle検索