我目前正在建立一个博客。虽然回形针照片在单个博客文章中弹出,但它们似乎不会在索引中弹出,索引中显示了所有博客文章。第 13 行似乎是问题所在。
这是我的索引.html.erb 我的帖子
10 <% @posts.each do |post| %>
11 <tr>
12 <td><%= link_to post.title, post_path(post) %></td>
13 <td><%= image_tag @post.picture(:medium) %></td>
14 <td><%= post.text %></td>
15 <td><%= link_to 'Show', action: :show, id: post.id %></td>
16 <td><%= link_to 'Edit', action: :edit, id: post.id %></td>
17 <td><%= link_to 'Destroy', { action: :destroy, id: post.id },
18 method: :delete, data: { confirm: 'Are you sure?' } %></td>
它给我抛出了一个无方法错误。
如果您需要更多信息,请告诉我是否可以为您提供额外的文件提前谢谢你!
您不会将图像的 URL 传递给image_tag
帮助程序。
您需要像这样显示图像:
<%= image_tag post.picture.url(:medium) %>
您正在尝试访问@post
实例变量,但该实例变量不存在。相反,在你的循环中,你应该访问你的post
局部变量,如下所示:
<%= image_tag post.picture.url(:medium) %>
另请注意,从文档中看,访问Picture
实例变体的正确语法涉及将变体名称传递给 url
属性:
post.picture(:medium) # Invalid
post.picture.url(:medium) # Valid!
正如 Jon 所提到的,你需要在 picture
对象上使用 .url
方法(官方文档):
<%= image_tag post.picture.url(:medium) %>
回形针
这样做的原因是回形针实际上创建了自己的picture
对象,并附加了几种方法(url
就是其中之一)。这意味着您必须在每次显示帖子的图像时调用url
才能加载它
通常,您可以在实例或局部变量上调用方法,但是由于回形针实际上创建了自己的对象,因此您必须使用其内置方法才能使其正常工作