0

我已经阅读了 Rails 3 Engines 提供的 Overriding named routes并征求了一些新的答案,但是如果您的目标是批量删除路由,那么所有解决方案都感觉很糟糕。

预先设置路由以覆盖引擎的路由是有效的;但是,当引擎资源丰富时,它会变得很耗时。嵌套资源使复杂性更加复杂。

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

就我而言,我想确信所有的路线都消失了。

4

1 回答 1

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
于 2013-02-21T18:46:11.197 回答