3

如何处理 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 之类的内容相匹配。我很沮丧,希望我缺少一些东西。

4

1 回答 1

2

我可能是错的,但我认为对于您的 format.all 调用,您可以将文件作为回报传递给它.. 类似这样的东西,您也可以在其中定义返回类型:

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

只需将“406.html”文件放在您的公共目录中,并带有“格式错误”的文本。在里面。

于 2011-05-06T00:00:27.037 回答