mxg*_*grn 9 routes ruby-on-rails rails-engines ruby-on-rails-3.1
我需要知道,从可安装引擎的布局内部,它当前正在安装的路径.怎么办呢?
例如我的routes.rb包含以下行:
mount BackendCore::Engine => "/backend"
Run Code Online (Sandbox Code Playgroud)
从BackendCore内部,我需要访问"/ backend"的值.
Chr*_*nig 10
如果引擎被:as =>命名为不同的名称,则查询named_routes将是不够的.这个猴子补丁会做:
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)
现在打电话mounted_path给引擎:
BackendCore::Engine.mounted_path => "/backend"
Run Code Online (Sandbox Code Playgroud)
注意:请注意,在生产模式下,在加载主应用程序的路由之前,会评估引擎中的类.在类宏中调用此方法可能不起作用!
更新:这可能只适用于Rails 3!
我找到了解决方案:
Rails.application.routes.named_routes[:backend_core].path #=> "/backend"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2800 次 |
| 最近记录: |