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›storage вече имам 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, но когато „проверявам елемент“, не виждам multipart. - 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