2011-05-05 34 views
3

在Rails 2.3中,如何处理路径中的错误格式?例如,假设你有一个想要处理html或json请求的动作,但没有别的,你怎么限制它,同时允许发布用户可读的错误?下面的代码片段显示了一个开始:如何处理Rails 2路由中的错误格式?

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种可接受的格式。)使用

0123的想法
map.connect '/xyz.:format', :action => ..., :controller => ..., :format => '/html|json/' 

听起来不错,但不起作用 - 它匹配xyz.comhtml之类的东西。我很沮丧,并希望有一些我错过了。

回答

2

我可能是错的,但我认为你format.all呼叫您可以传递一个文件中返回..这样的事情,你将返回类型定义,以及:

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

,只是把一个“406.html”文件在您的公共目录中,并显示“这是一个糟糕的格式”。在里面。

+0

不是一成不变的,但如果在'/ public /'目录中定义了一个406.html的错误页面,那么这样做会最好,对吧? – pjmorse 2011-05-06 12:56:29

+0

是的,对不起。我想我应该更清楚一点。已经在上面编辑了,谢谢pj – 2potatocakes 2011-05-09 23:10:41

+0

这是:我失踪的content_type;并补充说,似乎解决了我的问题。 – 2011-05-10 14:35:14