1

Paperclip は画像を正常にアップロードできます (画像はサーバー上の適切なフォルダーにアップロードされます)。ただし、画像を表示しようとすると、欠落していると報告されます。

モデル/写真.rb:

class Photo < ActiveRecord::Base
attr_accessible :image
attr_accessor :image_file_name, :image_file_size, :image_updated_at
has_attached_file :image, styles: {small: "300x300>" },
url  "/photos/:id/:style/:basename.:extension",
path: ":rails_root/public/photos/:id/:style/:basename.:extension" 


validates_attachment_presence :image
validates_attachment_size :image, less_than: 5.megabytes
end

画像の表示: (photos/show.html.erb):

<% if @photo.image? %>
    <%= image_tag @photo.image.url(:small) %>
<% else %>
    Missing image <%= @photo.id %>
<% end %>

これにより、正しい写真 ID を持つ「Missing image」が出力されます。

それにもかかわらず、アップロードされた写真は正しいパスに保存され、正しい URL 経由でアクセスできます。

 http://localhost:3000/photos/1/small/1351546785_accepted_48.png
4

2 に答える 2

0

問題は、image_file_name がデータベースに nil として格納されていることであることが判明しました。

attr_accessor :image_file_name は、image_file_name が適切な値を持つことをブロックしていたため、削除する必要がありました。この行を追加したのは、それが必要であると思われるエラーがあったためです。エラーを取り除くには、データベースの移行を次のように更新する必要がありました。

def change
  create_table :photos do |t|
    t.string :image_file_name
    t.string :image_content_type
    t.integer :image_file_size
    t.datetime :image_updated_at

    t.timestamps
  end
end
于 2012-11-06T05:14:24.890 に答える