2011-05-05 18 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