由于某种原因,除了image_tag
之外,我的所有资产助手都遇到了问题。它们都在产生错误的路径。我使用的是Rails 4.0.0和Ruby 2.0.0。我的图片位于/app/assets/images
e.g。
asset_url('this.png') # -> /this.png
asset_path('this.png') # -> /this.png
image_url('this.png') # -> /images/this.png
image_path('this.png') # -> /images/this.png
image-url('this.png') # -> /images/this.png
asset-url('this.png') # -> /this.png
image_tag('this.png') # -> <img ... src="/assets/this.png" /> <- only correct one
我的网址总是错误的...我需要/assets/this.png
,这似乎只是由image_tag
生成的
这种情况发生在.haml
,.scss
,.erb
等。
我无法找到解决这个问题的方法......之前有人见过这个并得到答案吗?
答案 0 :(得分:4)
答案 1 :(得分:1)
image_path已被弃用。请检查ApiDock
Method deprecated or moved
This method is deprecated or moved on the latest stable version. The last existing version (v3.2.13) is shown here.
These similar methods exist in v4.0.2:
ActionView::Helpers::AssetUrlHelper#image_path
对于 image_tag ,docs清楚地说Returns an HTML image tag for the source. The source can be a full path or a file.
所以在那种情况下它指向的路径是/assets/file_name.png
whereas for **image_path**
计算公共图像目录中图像资源的路径。来自文档根目录的完整路径将通过
路径是/images/filename.png
答案 2 :(得分:0)
我在使用新的Rail 4.2.1应用程序开发时遇到了这个问题。我有:
body
{
background: #EFEFEF image-url('layouts/background.jpg') no-repeat top center fixed;
}
和SASS愉快地产生了:
body
{
background: #EFEFEF url('/images/layouts/background.jpg') no-repeat top center fixed;
}
经过几个小时的故障排除后,我发现这种行为是由路径拼写引起的!包含我想要的图片的目录是layout
,而不是layouts
。
一旦我更正了路径,就会按预期生成url(/assets/layout/background.jpg)
。
更新12NOV2015
我再次遇到这个问题,这次是image_tag()
。我的路径拼写正确(图像在开发中工作正常),但我从文件路径中省略了“.png”。这在开发中工作得很好,但显然不在生产中。一旦我将“.png”添加到路径中,image_tag()
就有了正确的路径。
这种行为很荒谬。不知道为什么它会恢复到某个非标准路径(/images
而不是/assets
)而不是抛出异常(但我也没有费心去查看源代码)。