2014-01-29 53 views
4

由于某种原因,我除了image_tag之外的所有资产助手都遇到问题。他们都在产生错误的道路。我正在使用Rails 4.0.0和Ruby 2.0.0。我的图像在/app/assets/images资产管道路由助手解析为错误的URL或路径

例如

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 

我总是给出错误的URL ...我需要/assets/this.png只似乎是由image_tag

这发生在.haml.scss.erb都产生。

我无法找到解决这个问题的方法......任何人之前都看到过这个问题并得到答案?

回答

1

IMAGE_PATH一直deprecated.check的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

+1

感谢您解释的区别!有没有一个帮助程序像'image_tag'帮助程序那样计算完整路径?我的印象是'image_path'可以工作,按照这里的例子:http://apidock.com/rails/ActionView/Helpers/AssetUrlHelper/image_path但我的'image_path'产生了'AssetTagHelper'例子,而不是'AssetUrlHelper'示例 –

+0

只是为了澄清:'image_path'不被弃用,只是移动到另一个模块。 :) –

3

我和你有同样的问题。我跟着this thread,并能通过清除tmp缓存来解决它。

$ rake tmp:cache:clear 

希望它有帮助。

0

我也遇到了一个新的轨道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),而不是抛出异常(但我没有打扰到查看源代码)。

相关问题