如何在Rails 2.3中处理路由中的错误格式?例如,假设您有一个想要处理html或json请求的操作,但是如何在允许用户可读的错误发布的同时限制它?以下代码段显示了一个开头:
respond_to do |format|
format.html # render the default
format.json { do something appropriate }
format.all ?
end
问题是代替什么?,我试过:
format.all :text => "That's a bad format.", :status => 406
并且在正确设置状态代码时,文本不会被渲染(至少使用类似com的格式,这是我正在接收的格式。
一种可能性是更改路径文件,以便只接受两种格式,但这会遇到路径爆炸。 (我有4种可接受的格式。)使用
的想法map.connect '/xyz.:format', :action => ..., :controller => ..., :format => '/html|json/'
听起来不错但不起作用 - 它匹配像xyz.comhtml这样的东西。我很沮丧,希望有一些我不知道的东西。
答案 0 :(得分:2)
我可能错了,但我认为你的format.all调用你可以传递一个文件作为回报..这样你也可以定义返回类型:
format.all { render :file => File.join(Rails.public_path, '406.html'), :status => 406, :content_type => 'text/html' }
只需在您的公共目录中放置一个“406.html”文件,其中包含“那格式不好”的文字。在它。