帶有 S3 的回形針 - 未定義的方法 (Paperclip with S3 - undefined method)


問題描述

帶有 S3 的回形針 ‑ 未定義的方法 (Paperclip with S3 ‑ undefined method)

I am trying to use Paperclip gem with Amazon S3 in my Rails 3.2 application. However, the problem appears when I am adding :storage => :s3 and S3 information and generating form.

Error:

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

Extracted source (around line #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 } %>

Model:

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

Migration

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

I used the folowing article to implement S3: http://doganberktas.com/2010/09/14/amazon‑s3‑and‑paperclip‑rails‑3/ . I did bundle install, rake db:migrate and restarted the server.

What is interesting, the error does not appear and the form is being generated when the model lack S3 info:

Model (other version):

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

‑‑‑‑‑

參考解法

方法 1:

Problem solved by changing:

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

To

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

(by JacekJacek)

參考文件

  1. Paperclip with S3 ‑ undefined method (CC BY‑SA 3.0/4.0)

#paperclip #ruby-on-rails-3 #ruby-on-rails #amazon-s3 #ruby






相關問題

帶有 S3 的回形針 - 未定義的方法 (Paperclip with S3 - undefined method)

添加文件上傳進度條的最簡單方法(回形針)Apache/Paperclip/Rails (Easiest way to add file upload progress bar (paperclip) Apache/Paperclip/Rails)

EngineYard:分離代碼和資產 (EngineYard : Segregating the code & assets)

在 rails/paperclip 中處理一系列圖像 (handling an array of images in rails/paperclip)

rails - không thể tạo bản ghi với tệp đã tải lên (rails - can't build a record with uploaded file)

在保存到 Rails 模型之前打開臨時文件 (Open the temporary file before it is saved in Rails model)

Rails - 回形針 - 多張照片上傳不保存 (Rails - paperclip - Multiple photo upload not saving)

回形針不為一種型號存儲替代尺寸,但為另一種型號存儲 (Paperclip is not storing alternative sizes for one model, but does for another)

無法使用 S3 圖像的 image.to_file 使用 Paperclip gem 複製圖像 (Can't copy images with Paperclip gem using image.to_file for S3 images)

Paperclip.interpolates 隨機不返回值 (Paperclip.interpolates randomly not returning a value)

未初始化的常量 AWS::S3::NoSuchBucket (uninitialized constant AWS::S3::NoSuchBucket)

來自基類的 Rails STI 條件子類化 (Rails STI conditional sub-classing from base class)







留言討論