Rails にカスタム エラー ページをレンダリングするように指示する方法はありますか (たとえば、ErrorsController. 私は多くのトピックを検索しましたが、ちょっとうまくいくように見えるのは、次のApplicationControllerようなものを追加することでした
if Rails.env.production?
rescue_from Exception, :with => :render_error
rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found
rescue_from ActionController::UnknownController, :with => :render_not_found
rescue_from ActionController::UnknownAction, :with => :render_not_found
end
render_error次に、メソッドと希望する方法を記述しますrender_not_found。これは、本当にエレガントではない解決策のように思えます。また、発生する可能性のあるすべてのエラーが何であるかを正確に知る必要があるため、これは悪いことです。一時的な解決策です。
また、そのように救助する簡単な方法は本当にありませんActionController::RoutingError。1つの方法は、次のようなものを追加することであることがわかりました
get "*not_found", :to => "errors#not_found"
あなたにroutes.rb。しかし、どこかでActionController::RoutingError手動でレイズしたい場合はどうしますか? たとえば、管理者ではない人が URL を推測して「adminy」コントローラーにアクセスしようとするとします。そのような状況では、ある種の「不正アクセス」エラーを発生させるよりも 404 を発生させるほうが好きです。手動で上げると、500 ページをレンダリングしようとしますが、404 が必要です。
では、Rails に次のように伝える方法はあります404.htmlか500.html? (もちろん、フォルダから404.htmlと500.htmlページを削除しました。)public