我的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:我在开发环境中工作,所以我提供自己的静态文件。
答案 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”在其他资产中访问模板。这很实用,因为在我的情况下,我只想让缩略图公开,而不是原始图片。