我有一个运行良好的大型 Rails 应用程序,但由于该应用程序的一些令人讨厌的行为,我遇到了谷歌的问题。当我打电话
http://railsapp.com/index.html
哪个不存在,应用程序返回正确的 404 错误。但是当我打电话
它返回一个 406 错误,这不是很好。每次请求扩展名为 .htm 的不存在文件时,都会出现此问题。如何让我的 Rails 应用程序返回 404 而不是 406?
我有一个运行良好的大型 Rails 应用程序,但由于该应用程序的一些令人讨厌的行为,我遇到了谷歌的问题。当我打电话
http://railsapp.com/index.html
哪个不存在,应用程序返回正确的 404 错误。但是当我打电话
它返回一个 406 错误,这不是很好。每次请求扩展名为 .htm 的不存在文件时,都会出现此问题。如何让我的 Rails 应用程序返回 404 而不是 406?
尝试这个
respond_to do |format|
format.html {}
format.js {}
end
因为在您的“#{RAILS_ROOT}/public/..”中,406.htm 文件不是他们的,因此它会给出错误,并且 404.html 文件在公用文件夹中可用,因此可以调用。
在你的 {RAILS_ROOT}/public 这些是文件是他们的
1. 404.html
2. 422.html
3. 500.html
如果你使用这些文件,那么它会调用 else 它会给出错误,比如文件不存在。
或者
你也可以在 ApplicationController 中定义一个方法,如:
def render_404
render :file => "#{RAILS_ROOT}/public/404.html", :status => 404
end
406.htm 文件在您的公用文件夹中不可用,因此您收到错误 - 非现有文件。根据您的布局在您的公用文件夹中添加 406.html 文件,然后尝试。