我在我的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