我已阅读Overriding named routes provided by Rails 3 Engines并征求了一些新答案,但如果您的目标是删除批量路线,那么所有解决方案都会非常糟糕。< / p>
Prepending routes覆盖引擎的路线是有效的;然而,当发动机资源丰富时,它变得耗时。嵌套资源会增加复杂性。
An::Engine.routes.prepend do
match "/route_goes_here" => redirect("/404")
end
就我而言,我希望所有的路线都消失了。
答案 0 :(得分:0)
如果您要删除路由,那么您很可能还需要修改其他代码(想想使用路径帮助程序的代码,一旦路由被删除就不会定义)。 / p>
对于我的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