为什么`assets`目录*有时*以我的`image_tag`路径为前缀?

时间:2013-04-19 13:52:48

标签: ruby-on-rails-3.2

我有一个简单的Photo模型:

class Photo < ActiveRecord::Base
  attr_accessible :image, :thumb, :title
end

并且在特定照片的记录视图中,erb:

<p id="notice"><%= notice %></p>
<p><%= image_tag @photo.image if @photo.image? %></p>
<%= link_to 'Edit', edit_photo_path(@photo) %> |
<%= link_to 'Back', photos_path %>

生成以下html片段(在body标签中):

<p id="notice"></p>
<p><img alt="Img_8283" src="/photo/image/1/IMG_8283.JPG" /></p>
<a href="/photos/1/edit">Edit</a> |
<a href="/photos">Back</a>

哪个没问题,因为照片存储在public/photo/image/1/IMG_8283.JPG

但是,在索引视图中,我有这个错误的代码:

<% @photos.each do |photo| %>
  <tr>
    <td><%= photo.title %></td>
    <td><%= photo.thumb %> | <%= image_tag photo.thumb if photo.thumb? %></td>
    <td><%= link_to 'Show', photo %></td>
  </tr>
<% end %>

生成此html源代码段:

<tr>
  <td>IMG_8283.JPG</td>
  <td>photo/thumb/1/IMG_8283.JPG | <img alt="Img_8283" src="/assets/photo/thumb/1/IMG_8283.JPG" /></td>
  <td><a href="/photos/1">Show</a></td>
</tr>

为什么在第二种情况下有/asset前缀,而不是第一种? 我希望<img>代码可以引用相同的基本位置路径(也是我的偏好)。

1 个答案:

答案 0 :(得分:0)

在第二个示例中,当您使用image_tag时,您正在使用assets pipeline中的某个功能来访问照片,这意味着image_tag会将您的路径附加到{{1}为了找到你要找的照片。

但是,如果assets/中已有文件,则仍会提供该文件,从而为您提供不一致的问题。