抱歉,如果这是一个简单问题的冗长积累,但我想弄清楚我的想法。
我现在在几个项目中使用了 Rails 4,并且一直在使用 Rails 4 中image_tag('/assets/image.png')
资产路径助手如何工作的更改。直到今天,我决定了解有关更改的更多信息并发现了第一个更改注意 sprockets-rails。我还注意到ASSET_PUBLIC_DIRECTORIES
Rails 助手中的 /actionview/lib/action_view/helpers/asset_url_helper.rb#L170 仅指向公共文件夹。对我来说很明显,如果您正在访问静态文件,Rails 希望您使用公用文件夹。
所以现在我已经弄清楚了,我就是不明白为什么边缘导轨文档清楚地说明了这一点:
在以前的 Rails 版本中,所有资产都位于公共的子目录中,例如图像、javascript 和样式表。使用资产管道,这些资产的首选位置现在是 app/assets 目录。
实际上,image_path 会生成一个指向 public/images 文件夹的 uri,这完全相反。
总而言之,我确实需要使用所有可用的助手和摘要构建器,因为我最终使用assets_sync将我的资产部署到 S3 。
所以我的问题是;是否有放置图像/非编译资产和使用asset_path 助手的正确位置?所有文档和所有其他堆栈溢出对话都是关于人们使用 app/assets 文件夹的,但 sprockets-rails 希望我们将 public 用于非摘要资产。网络上的文档和信息是否只是需要更新,或者其他人只是在所有资产路径前加上 /assets/?
更新:我认为我确实遇到了一个问题,即我没有重新启动我的开发服务器,并且 app/assets/images 中的图像没有显示,因此它会回退到公共。另请注意,我在回形针 default_url 中使用了资产助手(在我发现的几个堆栈溢出答案中,它被引用为指向资产的方式,但是在回形针中使用带有插值选项的资产路径助手也将回退到公共,因为显然,未插入的资产名称不会作为现有文件被发现。