ルーティング エラーが発生したときに 404 を表示するようにコントローラー、ルーティング、またはビューを作成するにはどうすればよいですか?
たとえば、ユーザーが URL アドレスにアクセスした場合
http://0.0.0.0:3000/posts/likes
likes
パスはルーティングのメソッドではありません。404 ページにリダイレクトするにはどうすればよいですか?
ルーティング エラーが発生したときに 404 を表示するようにコントローラー、ルーティング、またはビューを作成するにはどうすればよいですか?
たとえば、ユーザーが URL アドレスにアクセスした場合
http://0.0.0.0:3000/posts/likes
likes
パスはルーティングのメソッドではありません。404 ページにリダイレクトするにはどうすればよいですか?
簡単なグーグル検索では、ほとんどリソースが得られませんでした。次の2つをお勧めします。
私はこれらのいずれも個人的には使用しませんでしたが、gem は確実に役立つと思います。はい、2 つ目のリンクは実際のシナリオからのものです。
1.application_controller.rb内
# ..
rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found
private
def record_not_found(e)
render ‘errors/not_found’, :status => 404
end
2.エラーフォルダーとnot_found.html.erbという名前のファイルを作成します。
3.ソースをapplication_controller.rbに追加
def record_not_found(e)
render ‘errors/not_found’, :status => 404, :layout => ‘error’
end
Rails では、独自の「例外アプリ」を定義してエラーを処理できます。これは、エラーを処理する 1 つの方法です。でapplication.rb
:
config.exceptions_app = self.routes
そして、あなたのルートで:
match '/404', to: 'errors#not_found'
match '/500', to: 'errors#error'
次にErrorsController
、処理したいさまざまなエラーの with メソッドと、各エラーのテンプレート ファイル、およびerrors.html.erb
使用する場合はレイアウト ファイルが必要です。
ActionController::RoutingError
本番環境でActiveRecord::RecordNotFound
自動的に 404 を発生させます。