2010-12-07 50 views
1

我有一個控制器MyController,他的一些操作無法返回完整的HTML頁面,但只有沒有HTML/HEAD/BODY ...標記的內容。Rails中針對特定動作的自定義錯誤頁面

默認的錯誤頁面是500.html等等確實是完整的HTML頁面,對於這些MyController:我需要以非全頁面格式獲取錯誤頁面的操作。

這樣做的一個方法是:

覆蓋「render_optional_error_file()」的內部myController的和重定向的情況下的動作僅是一個我特別行動,以不同版本的錯誤頁面(含量,非全頁標籤)。

這項工作?任何其他出路?

順便說一句:我正在使用rails 2.3.9。

感謝, 埃雷茲

回答

0

這是一個有點棘手的問題,尤其是在500錯誤的情況下。由於500會在應用程序遇到錯誤時呈現,因此您不能/不應該擁有由控制器處理的動態頁面 - 因爲此控制器可能是問題的根源。

但是,在404的情況下,您可以使用404操作設置ErrorsController,並使用不同的佈局,具體取決於請求是否是XHR請求。

然後,所有你需要的是在你的ApplicationController等的方法:

def render_404 
    render "errors/404", :status => 404 
end 

,這將使你打電話給你的自定義錯誤處理程序你喜歡的地方。

你可以擴展這進一步增加了500錯誤的支持太(如適用),但請記住,你永遠需要靜態500.html在公共文件夾,櫃面一個更大的問題。