2010-06-30 35 views

回答

1

你可以拯救的ActionController ::來自application_controller的RoutingError,就像CanCan對未經授權的訪問建議的一樣:

class ApplicationController < ActionController::Base 

    (...) 
    # Reditect to a default route when user inputs a wrong one 
    rescue_from ActionController::RoutingError do |exception| 
    flash[:error] = "There is no such route" 
    redirect_to root_url 
    end 

end 
+0

(...)不太清楚這意味着什麼,但該方法的工作原理 – s84 2010-07-01 12:50:13

+0

Rails在路由識別失敗時使用該異常。 在這裏,我們停止該異常,並讓用戶在其他地方而不是讓rails顯示默認路由錯誤消息。 您可能發現Ryan Bates先生比我更具說服力: http://railscasts.com/episodes/53-handling-exceptions – Oinak 2010-07-02 12:23:46

5

您可以添加一個默認的根,捕獲所有路由。

例如從錯字源代碼的摘錄:

map.connect '*from', :controller => 'articles', :action => 'redirect' 

在你的控制器,你有一個PARAMS [:從],你的URL的所有PARAMS的數組

+0

這看起來不錯,但我在尋找所有的東西。任何錯字獲取重定向到根或一些默認的網址 – s84 2010-06-30 08:32:21

+1

它是。你可以使用catch-all路由來連接到一個特定的動作,並且在你調用'redirect_to'的動作中。或者,您直接將捕獲所有人連接到您希望用戶看到的操作。 – averell 2010-06-30 09:50:24

+1

另外,記得把它放在你的路徑文件的末尾:) – 2010-06-30 10:46:39

相關問題