- 2008-02-03 (Sun) 15:08
- Uncategorized
別にPHPの話題とは関係ないのですが、PHP見たいにHTMLにぺっとコードを貼って動かしたいなーというケースはRailsでアプリを組んでいて思う事が多々あります。
ヘルプページは静的なHTMLなんだけど、レイアウトはRails部分と共用したいなーとか、ヘッダ部分にログイン中のユーザ名だけは入れておきたいなーとか。
そこで、そんなときのため、http://example.com/helpにアクセスすると、RAILS_ROOT/erb/help.html.erbが実行されるような仕組みを考えてみました。めんどくさいのでプラグインにはしていません。
ルートファイルと、アプリケーションコントローラに下記のコードを追加してください。
config/routes.rbの最後の行に追加
map.connect '*path', :controller => 'application', :action => 'rescue_404' if ::ActionController::Base.consider_all_requests_local
app/controllers/application.rbの適当な所に追加
def rescue_404
absolute_root = File.join(File.expand_path(RAILS_ROOT),'')
template = File.expand_path(File.join('erb', *params[:path]), RAILS_ROOT)
if template.index(absolute_root) == 0
template = File.join(template, 'index') if File.directory?(template)
['.html.erb', '.erb', '.rhtml'].each do |ext|
return render(:file => template+ext) if File.file?(template+ext)
end
end
render :file => File.join(RAILS_ROOT, 'public', '404.html')
end
これで、RAILS_ROOT/erbディレクトリを作り、そこにerbファイルを置くと直接実行することができるようになります。
ApplicationControllerから呼ばれて実行されるので、アプリによってはログイン中のユーザ情報なども取得する事ができると思います。
p.s
前回のCookieSessionのjpmobile対応はあきらめました。色々ややこしいことが分かってきたので。。。
Related posts
- Newer: 渡米します
- Older: jpmobileのtrans sidをセッションのCookieStoreに対応させてみる
Comments:4
- ななし 08-02-05 (Tue) 18:42
-
ややこしい中でも、最大の所、または最大にムカついた所を是非教えて下さい。
自分の至ら無さとか、はぐらかしは無しで(笑) - masuidrive 08-02-05 (Tue) 18:47
-
URLを生成したあとに、sessionの中身を変更したときにそれが反映できない事が最大の原因でした。
filterを使って出来ない事もないけど、それならmod_chxjみたいなものでcookieをエミュレーションしたほうが良さそうだなと思ったので、やめました。 - trooper 08-05-06 (Tue) 10:23
-
古いエントリですみません。
jpmobileとは関係ないのですが、FLASHからデータPOSTする際にうまくCookie効いてくれないんで、
パラメータでCookieStoreの値を送るコードを書いたんですね。
で、masuiさんが指摘している「URLを生成したあとに、sessionの中身を変更したときにそれが反映できない」も
そうなんでしょうけど、そもそもCookieStoreの場合、Cookie以外の方法でRailsに送っても、正常に認識してくれないっぽいです。。
これそういう仕様なんでしょうかね??CookieStoreっていうだけあって。。泣うーん、FLASH使ってsession維持するの難しそうだな。。
- trooper 08-05-06 (Tue) 10:43
-
あ、なんか全エントリ読んだら完全に勘違いしていたことに気付きました。。
そもそも、CSRF対策をハックしないといけないんですね。。。
ちょっと希望がもてました!
Trackbacks:0
- Trackback URL for this entry
- http://blog.masuidrive.jp/index.php/2008/02/03/direct-erb/trackback/
- Listed below are links to weblogs that reference
- Railsでコントローラを作らずにerbだけ実行する方法 from @masuidrive blog