2013-02-21 85 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