routing errorやだな、どうやってやるんだろうかと悩んでいたところ
下記を見つけました。
ありがとうございます。
やってみた
route.rb
map.connect '*path', :controller => 'application', :action => 'error_404'
application_controller
rescue_fromと組み合わせて、404用テンプレートをlayout無しで表示。
rescue_from ActiveRecord::RecordNotFound, :with => :error_404 rescue_from ActionController::UnknownAction, :with => :error_404 def error_404 render :template => '/shared/error_404', :layout => false, :status => 404 end
2010/03/06追記
*pathについて記載されてた
Railscasts - Catch-all Route
2010/03/07追記
rescue_action_in_publicを使用したエラーハンドリング - うんたらかんたらRuby - Rubyistより
こっちでやると、こんな感じ。
config/environments/*rb
config.action_controller.consider_all_requests_local にて制御。
trueだとlocal用、falseだとpublic用。
protected def local_request? false end def rescue_action_in_public(exception) case exception when ActiveRecord::RecordNotFound, ActionController::RoutingError, ActionController::UnknownAction render :file => "#{RAILS_ROOT}/public/404.html", :status => 404 #render :template => '/shared/error_404', :layout => false, :status => 404 else super end end