0

我有以下兩行默認路由未知的動作異常:在Rails的路由錯誤3.1

match '/:controller/:action' 
    match '/*path' , :to => 'map#catch_all' 

所以,問題是,當用戶擊中有效控制和無效動作名稱,如/用戶/ AAAA然後得到和「未知的行動」的例外,因爲路線被上述路線的第一行抓住。 我也無法更改上述行的順序。

任何幫助? 所有意見都表示讚賞。提前致謝。

回答

3

在生產中,您不應該允許用戶訪問未明確允許的操作。您應該列舉所有可用的操作,或者使用資源自動允許平穩路徑。這將解決您的問題。

此外,如果輸入了不匹配的url,則404消息將顯示給用戶,這是處理此問題的正確方法。

UPDATE: 在你的ApplicationController您可以實現method_missing(method, *args)方法,來處理所有不存在的行動呼籲可能來自通配符路線。

def method_missing(method, *args) 
    # handle Unknown Action 
end 

但要知道,這抓住這是不存在的所有方法調用,這樣就可以在一個錯字的情況下進行調試例如造成問題。

+0

你的觀點是有效的,但我有不同的情況。我有一個龐大的代碼庫,所以可以枚舉所有的控制器/操作。第二行是完全按照你的建議做的,它觸發catch_all動作並在生產中呈現404。但問題在於,當您輸入有效的控制器名稱 –

+0

UnknowAction錯誤是在調度程序中間件中處理的。您需要一些解決方法來處理不存在的操作。 404頁面有什麼問題? – Matzi

+0

404頁沒有問題,當用戶點擊無效控制器和無效操作時,它成功顯示,但當用戶點擊有效的控制器和無效的ACtion時發生o0o0ps異常。 –

相關問題