0

最初の画像のみを表示する次のビューがあります。

<% @posts.each do |post| %>
    <a href="#"><%= image_tag post.uploads.first.upload.url(:thumb) %></a>
<% end %>

そして、私のモデル uploads.rb で、次のようにデフォルトの URL を設定しました

has_attached_file :upload,styles: { medium: ["500x400>",:jpg], thumb: ["150x100#",:jpg]}, default_url: '/assets/avatar.jpg', url: "/path/to/upload"

しかし、私はエラーが発生しています

undefined method `upload' for nil:NilClass

エラーは、この投稿の画像をアップロードしなかったためですが、デフォルトの画像をレンダリングしていない理由です

4

1 に答える 1

0

これは、アップロード オブジェクトを @posts の投稿オブジェクトにリンクしていないために発生します。つまり、通常は Paperclip のメソッドを含む、アップロード オブジェクトにリンクされていない投稿があります。

アップロードされていない画像の最小量のデフォルト画像を表示したい場合は、投稿オブジェクトの作成後にその量の「アップロード」を作成できます。出来上がり: アップロードオブジェクトはデータベースにありますが、画像データはありません。それらはデフォルトをレンダリングします。

もう 1 つ: アタッチメントにモデルと同じ名前を付けるのは非常にあいまいです。添付ファイルに「image」または「file」という名前を付けた方がよいため、URL 呼び出しは次のようになります。

post.uploads.first.image.url(:thumb)
于 2013-11-03T04:04:03.603 に答える