我明白如何将:controller,:action, :etc为URL.我正在寻找相反的方法,如何从URL中找到rails路由器将调用的操作?
我试图用概括的方法,这个帖子与结合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
Run Code Online (Sandbox Code Playgroud)
除了官方文档之外,在任何地方似乎都没有太多的讨论,这不是特别有用.我确定解决方案相对简单,我正在尝试编写的辅助方法的要点如下:
def in_engine? engine
current_url.include?(engine.mounted_path)
end
Run Code Online (Sandbox Code Playgroud)
编辑:
我的一些引擎作为子域安装,一些安装在应用程序本身内,这使我无法简单地检查当前子域是否与安装的路径相同,或者使用path_for.