传递给帮助者的资产名称不应包括" / assets /"字首

时间:2015-08-08 11:16:53

标签: ruby-on-rails

我有一个使用apache2和乘客生产的rails应用程序。但是我的一些图片并没有出现,所以我改变了' image_tag'像这样:

<%= link_to image_tag("/assets/#{product.image_url}", {:title => "Push it into cart!"}), line_items_path(product_id: product), method: :post %>

在此之后所有的工作都很好。但是当我尝试开发时,我遇到了这个错误:

Sprockets::Rails::Helper::AbsoluteAssetPathError in Store#index 
Asset names passed to helpers should not include the "/assets/" prefix. Instead of "/assets/cs.jpg", use "cs.jpg"

我应该做些什么来使它在两个环境中都有效?

2 个答案:

答案 0 :(得分:0)

你永远不应该使用/ assets / prefix,你可能只需要预编译资产进行生产。

  

rake assets:预编译RAILS_ENV =生产

它还取决于您使用所述资产的位置,例如,在样式表中使用它时,您应该使用image-url(&#39; image.jpg&#39;)rails css helper。在视图中内联使用它时,您可以使用image_tag帮助程序。

答案 1 :(得分:0)

只要您启用了资源管道(默认设置)并且您的图片位于image_tag文件夹中,

/assets/就可以在不使用app/assets/images/路径的情况下工作。如果您的图片位于该文件夹之外,则不会进行预编译,因此您必须在config/environments/production.rb添加

中将其添加到资产预编译中
config.assets.precompile += ['image.jpg']

我认为,对于您的问题,您不应将产品的图像存储在assets文件夹中,因为这用于应用程序图像而非您的内容(模型)图像,这些应存储在公共文件夹public/uploads通常由paperclip

等宝石使用