我正在建立一个博客。当回形针照片弹出个别博客文章时,它们似乎不会在索引中弹出,其中显示所有博客帖子。 第13行似乎是问题所在。
这是我的帖子的index.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>
它抛出了一个无方法错误。
如果您需要更多信息,请告诉我是否可以提供额外的文件 提前谢谢!
答案 0 :(得分:2)
您没有将图片的网址传递给image_tag
帮助者。
你需要像这样显示你的图像:
<%= image_tag post.picture.url(:medium) %>
答案 1 :(得分:2)
您正在尝试访问@post
实例变量,但该实例变量不存在。相反,在循环中,您应该访问post
本地变量:
<%= image_tag post.picture.url(:medium) %>
另请注意,从the documentation开始,访问Picture
实例变体的正确语法包括将变体名称传递给url
属性:
post.picture(:medium) # Invalid
post.picture.url(:medium) # Valid!
答案 2 :(得分:1)
如Jon所述,您需要在.url
对象(official documentation)上使用picture
方法:
<%= image_tag post.picture.url(:medium) %>
<强>回形针强>
原因是Paperclip实际创建了自己的picture
对象&amp;附上几种方法(url
是其中之一)。这意味着每次显示帖子的图片时都必须致电url
以使其加载
通常,您可以在实例或局部变量上调用方法,但是当Paperclip实际创建自己的对象时,您必须使用其内置方法才能使其正常工作