1

Rails3.2アプリケーションでAmazonS3でペーパークリップジェムを使用しようとしています。ただし、:storage =>:s3およびS3情報を追加してフォームを生成すると、問題が発生します。

エラー:

undefined method `photo' for #<PlacePhoto:0x007fdbbd1e75a8>

抽出されたソース(行#78周辺):

75:   <% end %>
76: 
77:   <%= f.simple_fields_for :place_photos do |photo| %>
78:     <%= photo.input :photo %>
79:     <%= photo.input :description,
80:       :label => "Photo label",
81:       :input_html => { :class => 'span4', :rows => 2 } %>

モデル:

class PlacePhoto < ActiveRecord::Base
  has_attached_file :photo, 
    :styles => { :medium => "300x300#", :thumb => "100x100#" },
    :storage => :s3,
    :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
    :path => "/:style/:id/:filename"
  attr_accessible :description, :photo

  belongs_to :place

  validates_attachment :photo,
    :presence => true,
    :content_type => { :content_type => /image/ },
    :size => { :in => 0..2.megabytes }
end

移行

class CreatePlacePhotos < ActiveRecord::Migration
  def change
    create_table :place_photos do |t|
      t.text :description
      t.integer :place_id
      t.has_attached_file :photo

      t.timestamps
    end
  end
end

次の記事を使用してS3を実装しました:http://doganberktas.com/2010/09/14/amazon-s3-and-paperclip-rails-3/。バンドルインストール、rake db:migrateを実行し、サーバーを再起動しました。

興味深いことに、モデルにS3情報がない場合、エラーは表示されず、フォームが生成されます。

モデル(他のバージョン):

class PlacePhoto < ActiveRecord::Base
  has_attached_file :photo, 
    :styles => { :medium => "300x300#", :thumb => "100x100#" }
  attr_accessible :description, :photo

  belongs_to :place

  validates_attachment :photo,
    :presence => true,
    :content_type => { :content_type => /image/ },
    :size => { :in => 0..2.megabytes }
end
4

1 に答える 1

1

変更することで解決される問題:

:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",

:s3_credentials => "#{Rails.root}/config/s3.yml",
于 2012-06-13T22:07:30.987 に答える