現在のパスがマウントされたエンジンにあるかどうかを判断するために、この投稿で概説されている方法を使用しようとしていますurl_for
が、正確に使用する方法を理解するのに苦労しています(概説Journey::Path::Pattern
された方法によって返されるものです)mounted_path
別の投稿で)。
class Rails::Engine
def self.mounted_path
route = Rails.application.routes.routes.detect do |route|
route.app == self
end
route && route.path
end
end
特に役に立たなかった公式ドキュメントを除いて、どこでもあまり議論されていないようです。解決策は比較的単純であると確信しており、私が書こうとしているヘルパー メソッドの要点は以下のとおりです。
def in_engine? engine
current_url.include?(engine.mounted_path)
end
編集:
エンジンの一部はサブドメインとしてマウントされ、一部はアプリ自体にマウントされているため、現在のサブドメインがマウントされたパスと同じかどうかを単純に確認したり、path_for
.