0

Rails 3 Enginesによって提供される名前付きルートのオーバーライドを読み、いくつかの新しい答えを求めましたが、ルートをまとめて削除することが目標である場合、すべてのソリューションはかなり粗雑に感じます。

エンジンのルートをオーバーライドするためにルートを先行させることは効果的でした。ただし、エンジンのリソースが豊富な場合は時間がかかります。リソースをネストすると、複雑さが増します。

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

私の場合、すべてのルートがなくなったことを確信したいと思います。

4

1 に答える 1

0

ルートを削除する場合は、他のコードも変更する必要がある可能性が高くなります(ルートが削除されると定義されないパスヘルパーを使用するコードを考えてみてください)。

SuperDuper :: Engine用に、SuperDuper::Configurationモジュールを作成しました。エンジンのconfig/routers.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 に答える