2013-02-21 88 views
0

我讀過Overriding named routes provided by Rails 3 Engines並請求一些新的答案,但所有的解決方案感覺相當嚴重,如果你的目標是刪除散裝路線。刪除導軌引擎的路線

Prepending routes重寫引擎的路線是有效的;然而,當發動機資源豐富時,它變得耗時。嵌套資源複雜化。

An::Engine.routes.prepend do 
    match "/route_goes_here" => redirect("/404") 
end 

在我的情況下,我想要確信所有的路線都消失了。

回答

0

如果您要刪除路由,那麼您很可能需要修改其他代碼(想想使用路徑助手的代碼,一旦路由被移除後將不會被定義)。

對於我的SuperDuper :: Engine,我創建了一個SuperDuper :: Configuration模塊。在引擎的config/routes.rb中,我根據配置定義路由。定義助手方法以有條件地呈現您的各種鏈接/表單/按鈕。

通過覆蓋配置模塊的設置,您可以控制在應用程序啓動時引擎的路線將被包含在內。

module SuperDuper 
    module Configuration 
    def self.documents=(bool) 
     @documents = bool 
    end 

    def self.documents 
     @documents.nil? ? true : @documents 
    end 
    end 
end