从 Rails 控制器访问资产路径

Posted

技术标签:

【中文标题】从 Rails 控制器访问资产路径【英文标题】:Access Asset Path from Rails Controller 【发布时间】:2011-12-11 05:48:26 【问题描述】:

我正在共享一个配置 yml 文件客户端,我还需要在服务器端加载它,我已将它放在 app/assets/javascripts/configuration.yml 中

我可以在视图中使用 #asset_path 'configuration.yml' 来获取路径,但不能在控制器中使用。我可以使用“#Rails.root/app/assets/javascripts/configuration.yml”直接访问,但是在部署文件名时会附加摘要字符串。

如何从控制器获得相同的路径?

【问题讨论】:

【参考方案1】:
ActionController::Base.helpers.asset_path("configuration.yml")

将 configuration.yml 放在不同的文件夹中以将 javascript 与非 javascript 文件分开也可能会很好。

【讨论】:

谢谢!我不需要使用/assets/。我可以调用 ActionController::Base.helpers.asset_path("configuration.yml") 我还考虑将 yml 文件放在另一个文件夹中,尝试将其直接添加到 app/assets 文件夹中,但我无法访问它。无论如何感谢您的建议。 @MarcelM。您需要将其他文件夹添加到 application.rb 中的搜索路径。像这样config.assets.paths << Rails.root.join("app", "assets", "yml") 这在 Rails 4 中已被弃用。 @Agis — 可能包括新的推荐解决方案。

以上是关于从 Rails 控制器访问资产路径的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3.1 资产管道:如何加载特定于控制器的脚本?

从 Rails 应用程序的数据库中提取 CSS 资产(如背景图像)?

Elastic Beanstalk:没有为 Rails 资产设置缓存控制标头(乘客独立)

(Rails)从不同视图中的控制器访问方法

解决 Rails 3.2 中控制器的视图路径

rails:从控制器名称中删除下划线