別に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’)… Read more »
