删除Rails引擎的路由

时间:2013-02-21 18:32:01

标签: ruby-on-rails rails-engines

我已阅读Overriding named routes provided by Rails 3 Engines并征求了一些新答案,但如果您的目标是删除批量路线,那么所有解决方案都会非常糟糕。< / p>

Prepending routes覆盖引擎的路线是有效的;然而,当发动机资源丰富时,它变得耗时。嵌套资源会增加复杂性。

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

就我而言,我希望所有的路线都消失了。

1 个答案:

答案 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