2010-04-26 151 views
0

我在控制器PagesController中創建了一個名爲error404的操作。我想顯示這個動作,如果發生以下情況:生成404錯誤

  1. 在URL的控制器不存在
  2. 在URL的動作不存在

我怎樣才能做到這一點?

我試圖按照此頁上的說明Show a 404 instead of 500 in Rails,但似乎只適用於第一種情況。

感謝您的幫助。 :)

回答

0

我想如果您的控制器中的操作不存在,並且您的控制器是由腳手架生成的,那麼默認情況下它會轉到控制器的'show'方法。

對於防爆; - http://www.domain.com/controller_name/invalid_action_name

這裏你 「CONTROLLER_NAME」 是有效的控制。 &

「invalid_action_name」爲無效操作。

然後在默認情況下,它將params [:id]視爲「invalid_action_name」的「controller_name」&的'show'方法。

所以在表演方法,你可以拯救錯誤,可顯示有效的錯誤頁面,如「記錄找不到」或「錯誤404」

EDITED 你必須添加路線在新的方法名的/config/routes.rb如下

map.resources :controller_name, :collection=>{:show=>:get} 

不要忘記每當你改變這個文件時重啓服務器。

+0

謝謝。我對RoR很陌生,不太明白。 我創建了一個名爲「show」的新動作。當我點擊invalid_action_name時,它沒有進入動作「顯示」。它只是給我...... 未知的行動 對invalid_action_name沒有響應。操作:xxxx,xxxx,xxx 是我犯了什麼錯誤? – 2010-04-26 11:05:21

+0

你必須添加路由到你的routes.rb。請查看我編輯的答案。 – Salil 2010-04-26 11:27:48

+0

oops。它不適合我。但感謝您的幫助。 :) – 2010-04-26 12:36:14