0

我有一个简单的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.

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

<% @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>标签引用相同的基本位置路径(这也是我的偏好)。

4

1 回答 1

0

在第二个示例中,当您使用 时image_tag,您正在使用资产管道中的函数来访问照片,这意味着image_tag会将您的路径附加到assets/,以便找到您要查找的照片。

但是,如果其中已经有一个文件,public/assets...它仍然会被提供,给你带来不一致的问题。

于 2013-04-19T14:27:32.623 回答