Image src在Rails中不起作用

时间:2013-03-30 15:57:10

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我的haml文件:

%img{:class => 'thumbnail', :src => '/assets/images/filename.jpg'}

它在html浏览器中正确输出:

<img class="thumbnail" src="/assets/images/filename.jpg">

但图像没有显示出来。 这正是Chrome所寻求的:

http://127.0.0.1:3000/assets/images/filename.jpg

但是当我尝试访问该网址时,我正在显示:

Routing Error
No route matches [GET] "/assets/images/filename.jpg"
Try running rake routes for more information on available routes.shown

我应该在配置文件中添加一些内容吗?非常感谢任何帮助,谢谢。

PS:我在开发环境中工作,所以我提供自己的静态文件。

3 个答案:

答案 0 :(得分:4)

您应该使用/assets/filename.jpg而不使用images命名空间。

答案 1 :(得分:1)

您应该可以在haml文件中执行= image_tag('filename.jpg', class: 'thumbnail')

此外,您可以在添加路径之前检查是否有任何图像,只需访问浏览器并查看是否有任何显示,例如:

http://127.0.0.1:3000/assets/images/filename.jpg

http://127.0.0.1:3000/assets/filename.jpg

答案 2 :(得分:0)

我解决了我的问题。因为我使用Rails 3.2并且此版本使用资产管道,所以您必须声明要公开的目录。您可以通过在config / application.rb文件中添加以下行来执行此操作:

config.assets.paths << Rails.root.join("path", "to", "dir", "from", "root")

就我而言,我希望媒体/图像/缩略图目录成为资产的一部分(媒体位于根级别),所以我只需添加以下内容即可实现:

config.assets.paths << Rails.root.join("medias", "images", "thumbnails")

然后,我可以使用src =“/ assets / filename.jpg”在其他资产中访问模板。这很实用,因为在我的情况下,我只想让缩略图公开,而不是原始图片。