Paperclip::AdapterRegistry::NoHandlerError вложенные данные и хранилище s3

Я использую Paperclip для загрузки нескольких изображений и сохранения их в s3. Итак, у меня есть модель галереи, которая выглядит так:

class Gallery < ActiveRecord::Base
    attr_accessible :title, :body, :pictures_attributes
    has_many :pictures
    accepts_nested_attributes_for :pictures, :allow_destroy => true


end

и в галерее должно быть много картинок. Моя фотомодель выглядит так:

class Picture < ActiveRecord::Base
 belongs_to :gallery
   has_attached_file :picture, :styles => { :small => "150x150>", :medium => "300x300"  },
                      :storage => :s3,
                      :s3_credentials => "#{Rails.root}/config/amazon_s3.yml",
                      :path => "/:class/:style/:id/:filename"                 

      validates_attachment_presence :picture
      validates_attachment_size :picture, :less_than => 5.megabytes
      validates_attachment_content_type :picture, :content_type => ['image/jpeg', 'image/png']

end

Я уже поместил это в свой _form.html.erb:

<%= form_for @gallery, :html => { :multipart => true } do |f| %>

и это тоже

<%= f.fields_for :picture do |picture_form| %>
        <p>
          <%= picture_form.file_field :picture %>
        </p>
 <% end %>

В моем Galleries_controller у меня есть это:

def new
        @gallery = Gallery.new
        5.times{ @gallery.pictures.build }
    end

      # GET /galleries/1/edit
    def edit
        @gallery = Gallery.find(params[:id])
        5.times{ @gallery.pictures.build }
    end

      # POST /galleries
      # POST /galleries.xml
    def create
      @gallery = Gallery.new(params[:gallery])
      respond_to do |format|
          if @gallery.save
            format.html { redirect_to(admin_gallery_path(@gallery), :notice => 'Gallery was successfully created.') }
            format.xml  { render :xml => @gallery, :status => :created, :location => @gallery }
          else
            format.html { render :action => "new" }
            format.xml  { render :xml => @gallery.errors, :status => :unprocessable_entity }
          end

        end
end

Я нашел похожий случай, последовал ответ. Но я все еще получаю то же сообщение об ошибке. Я попытался изменить RAILS_ROOT на Rails.root, но это не помогло. Я попытался выполнить этот ответ, но я не уверен, куда передать параметры скрепке?

Кто-нибудь знает, в чем проблема? Спасибо


person ishwr    schedule 08.05.2013    source источник
comment
просто кое-что, что я заметил в вашей конфигурации скрепки... где ваше ведро? где вы на самом деле сохраняете изображения? вам нужно создать ведро в вашей учетной записи aws   -  person Richlewis    schedule 08.05.2013
comment
Вы имеете в виду это: :storage =› :s3, :s3_credentials =› #{Rails.root}/config/amazon_s3.yml Я не уверен, что вы подразумеваете под ведром. Мне жаль. Но я использовал скрепку и s3 в другой модели (не вложенной_формы), и это работает   -  person ishwr    schedule 08.05.2013
comment
значит что? думаю, вы что-то пропустили там   -  person Richlewis    schedule 08.05.2013
comment
да извините, только что отредактировал   -  person ishwr    schedule 08.05.2013


Ответы (1)


Итак, из того, что я вижу, вам, похоже, не хватает (корзины) места для хранения ваших изображений в AWS. Я покажу вам пример того, что я имею в виду

 has_attached_file :avatar, 
 :styles => {:thumb => "100x100>" },
 :storage => :s3,
 :s3_credentials => "#{Rails.root}/config/s3.yml",
 :path => "/images/:id/:style.:extension",
 :url  => ":s3_domain_url",
 :bucket => "assets.recipesapp"

Вы создаете корзину в своей учетной записи AWS

person Richlewis    schedule 08.05.2013
comment
Несмотря на то, что в моем хранилище lib›paperclip› уже есть s3.rb, мне все еще нужно добавить :bucket в конфигурацию paperclip? Потому что на других занятиях я тоже использую скрепку, но не добавляю ведро. - person ishwr; 08.05.2013
comment
хорошо, а как тогда просматривать эти изображения через AWS, например, можно ли войти в свою учетную запись и увидеть все свои активы? Вот как я это делаю, и в прошлом у меня не было проблем, может быть, попробовать? - person Richlewis; 08.05.2013
comment
проблема не в этом, к сожалению :( Думаю, теперь я знаю, в чем проблема. Я уже поместил это ‹%= form_for(@gallery, :html =› { :multipart =› true }) do |f| _form.html.erb, когда я вижу «просмотреть исходный код страницы», я вижу multipart =› true, но когда я «проверяю элемент», я не вижу составного. - person ishwr; 09.05.2013
comment
если вы используете form_for, вам не нужно устанавливать multipart =› true, это уже сделано за вас guides.rubyonrails.org/form_helpers.html#uploading-files если вы используете form_tag, то да, вам нужно его использовать - person Richlewis; 09.05.2013