【发布时间】:2011-11-15 12:51:37
【问题描述】:
我遇到了资产管道问题,我已经有一个名为 assets 的资源/控制器。所以我将 assets.prefix 选项更改为“/externals”。
config.assets.prefix = '/externals'
除非我删除,否则这个简单的剂量不起作用:
resources: assets
然后一切都按预期工作。
我不确定如何编写测试来证明这一点,但我创建了一个应用程序来展示它。
https://github.com/nodrog/asset-pipeline-issue
如果您运行应用程序,访问“/products”一切正常,则转到路由文件并将变量 create_bug 更改为 true。
我们查看了https://github.com/rails/rails/blob/master/actionpack/lib/sprockets/helpers/rails_helper.rb,然后在asset_path 方法中添加了一个调试器。
如果您只是 javascript_include_tag 方法中的调试器,则不会调用此方法。然后运行method(:asset_path).source_location,它会告诉你它是从默认路由调用该方法,而不是从sprockets helper。
任何帮助将不胜感激...
【问题讨论】:
-
就这个问题在 rails lighthouse 开了一张票。并上传了一个解决问题的人,尽管可能不是最好的方式。 github.com/rails/rails/issues/3643#issuecomment-2775938
-
你说得对,这是一个复杂的问题。我遇到了它,因为助手根本没有使用 config.assets.prefix 选项(无论 routes.rb 中是否有资源 :assets),当它被修复时,我认为一切都很好。唉,当资产在 config.rb 中指定时,Sprockets 助手不使用配置设置。为什么?我现在看看你的工作。我已经尝试使用约束来解决它,以及将我的自定义前缀指向 Sprockets,但没有运气。
标签: ruby-on-rails asset-pipeline