Missing route on Rails

by winson, about 1 year ago.

處理404 not found的解法有很多,大概有幾種處理方式:

1. 在Application controller宣告一個method_missing,把所有找不到的method導過去處理。

2. 利用Exception handler。

3. 利用Route設定。

1和2大概除了程式不同之外,後續處理都一樣,都是放一個404 not found要用的網頁,而且還要在Route裡頭宣告,寫程式當然可以做很多你想要做的處理,但缺點是太過麻煩。

而3最簡單,完全不用寫程式,只要在config/routes.rb最下方,擺一個優先順序最低的路徑宣告,例如:

map.connect '*anything',  :controller => 'your_controller', :action => '404'
然後,簡單寫一個404要用的網頁,放在’your_controller’的view裡頭,檔名是404.rhtml即可。至於404的action就別理它了,反正會先去找view。

因為這個路徑宣告的優先順序最低,所以只會在所有路徑設定都無法滿足時,才會跑到這裡,這正好是404 not found的處理目的。

放在view裡面的好處是可以跟你的模板完美的套在一起,所以找不到controller或action的時候,就會看到一個小孩不知所措、啃著薯條的樣子:


  • Posted in Routing, on Monday, May 21, 2007, at 09:55 AM.