你如何处理Rails 2路由中的错误格式?

时间:2011-05-05 21:38:19

标签: ruby-on-rails format rails-routing

如何在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这样的东西。我很沮丧,希望有一些我不知道的东西。

1 个答案:

答案 0 :(得分:2)

我可能错了,但我认为你的format.all调用你可以传递一个文件作为回报..这样你也可以定义返回类型:

format.all { render :file => File.join(Rails.public_path, '406.html'), :status => 406, :content_type => 'text/html' }

只需在您的公共目录中放置一个“406.html”文件,其中包含“那格式不好”的文字。在它。