我在我的Rails應用程序中設置了自定義錯誤頁面。Rails 500錯誤顯示PUT請求的空白頁面
application.rb中
config.exceptions_app = self.routes
的routes.rb
get '404', to: 'application#page_not_found'
get '422', to: 'application#server_error'
get '500', to: 'application#server_error'
application_controller.rb
def page_not_found
respond_to do |format|
format.html { render template: 'errors/not_found_error', layout: 'layouts/application', status: 404 }
format.all { render nothing: true, status: 404 }
end
end
def server_error
respond_to do |format|
format.html { render template: 'errors/internal_server_error', layout: 'layouts/error', status: 500 }
format.all { render nothing: true, status: 500}
end
end
我的自定義500錯誤頁面顯示正常,當我做一個引發錯誤的GET請求,但是當我提交一個表單觸發一個NoMethodError,所以一個PUT請求,我只是得到一個空白頁。
任何想法爲什麼500錯誤頁面正確顯示GET請求,但不是PUT請求?
我試圖改變server_error
方法
def server_error
render template: 'errors/internal_server_error', layout: 'layouts/error', status: 500
end
,但這似乎並沒有幫助。
讓我知道如果我可以提供更多的代碼,我不知道如何解決這個問題。
嘗試改變'GET'到'match'。 – sahil
在'get'路由中意味着GET請求,如'put','post','patch'和'delete'。正如@ sa77回答,嘗試使用匹配'via::all'來代替。 –
請接受答案,如果它幫助和關閉的問題,以便有類似問題的人可以很容易地找到它 – sa77