Rails:简单的资产管道问题,图像中断

时间:2015-12-01 19:37:02

标签: ruby-on-rails asset-pipeline

我有一个项目,每个项目都有一个字符串图像列,我在其中存储图像的路径,如assets/images/items/1.jpg

如果我致电some_item.image,我会收到该图片的路径,例如"/assets/items/1.jpg"

如果我进入视图并写<img src="/assets/items/1.jpg">,我会看到正确的图像。但是使用image_tag <%= image_tag(some_item.image) %>时,图片标记的填充方式与<img src="images/assets/items/1.jpg">一样,无法正确显示图片。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

而不是image_tag,您应该使用image_path() or image_url() helpers代替。

考虑以下事项:

img = 'some_image.png'
image_tag(img)  #=> <img src="some_image.png"/>
image_path(img) #=> <img src="/assets/some_image.png"/>
image_url(img)  #=> <img src="http://host.ext/assets/some_image.png"/>

答案 1 :(得分:0)

我建议您在Item模型上定义一个方法,该方法返回image_tag的有效路径:

示例:

def image_path
  self.image_path.sub(/^\/assets\//, '') 
  # removes '/assets/' from the start of the string
  # returns a String like 'items/1.png'
end
在您看来

= image_tag(item.image_path)