为什么图像没有显示在我的rails基本应用程序中

我的index.html.erb代码 –

 

Listing products

'list_image') %>

和图像在app\assets\images但是静止图像没有出现在前端。

当我Firebug它,我相信图像标签正确形成…让我知道我在这部分缺少什么。

 Product1 

截图

截图

图像也到位 –

图像占位符

让我知道我做错了什么,我该如何解决它。

编辑

github.com/swapnesh/depot

让我知道为什么它不适合我的情况。

虽然改变https://stackoverflow.com/images/product1.jpg /assets/product1.jpg使它工作。

如果您正在使用资产管道http://guides.rubyonrails.org/asset_pipeline.html ,

图像路径应为/assets/product1.jpg而不是/images/product1.jpg

如果您没有使用资产管道,请将images文件夹移动到public/images

我刚检查了你的应用程序,你的代码没有任何问题。 唯一的问题是了解image_tag的工作原理。

通常,您将所有图像,javscripts和stylesheests放在app / assets目录中。 在处理开发环境时,这些文件是未压缩的,但在部署到生产时,资产会进行预编译,缩小,结果文件存储在公共/资产中

缩小资产背后的想法,只是为客户提供更快的请求,并节省带宽。

现在,在方法image_tag上 ,您可以使用图像的外部路径,图像的本地路径或图像的相对路径。

当你这样做

 <%= image_tag "http://www.mywebsite.com/image.jpg" %> 

它将使用图像标记的绝对URL,您将结束

  

您也可以添加本地路径

 <%= image_tag "https://stackoverflow.com/images/image.jpg" %> 

哪个将结束

  

这实际上是你遇到的问题,因为rails,当它预编译文件时,它将所有内容放在/ public / assets中 ,你可以通过转到其他用户解释的路径/资产来访问这些文件。

所以代码

 <%= image_tag "https://stackoverflow.com/assets/image.jpg" %> 

实际上是有效的,因为你以

  

你可以做的另一件事是使用相对路径,即

 <%= image_tag "image.jpg" %> 

将被转换为

  

这将在最后一个场景中起作用。

然而,在您的应用程序中,您将让用户上传他们自己的图像,这将在您在书上推进后发生,在真实世界的应用程序上,您将使用像paperclip或carrierwave这样的gem

正如Srikanth已经说过的那样,应该引用资产路径。 例如,您可以在代码中放置<%= image_tag 'rails.png' %>并检查firebug(或检查chrome中的元素)以检查结果。

我不太清楚为什么你的代码不起作用,因为我可以看到你使用Rails跟踪敏捷Web开发。 我让depot应用程序运行没有问题。 在你的表格中我看到你’Product1’,’Product2’和’Product3’,这是你在image_url text_field中实际填写的内容吗? 如果您将“Product1”更改为“product1.jpg”会发生什么?

另外,如果您想使用Paperclip,您的通话应如下所示:

 <%= image_tag(product.image.url, class: 'list_image') %>