Rails 3.1 с jQuery-File-Upload и вложенным Paperclip - PullRequest
0 голосов
/ 30 октября 2011

Я использую Rails 3.1 с Paperclip и ищу способ реализовать jQuery-File-Upload.

У меня есть основные рабочие настройки, следуя примеру: blueimp jquery = загрузка файла

Но когда я представил модель вложенных атрибутов, в которой закачки вложены в пост, она развалилась.Приводится ошибка «неизвестный атрибут: изображение».Следует понимать, что uploads_attributes, возможно, придется маршалировать отдельно, особенно для параметров изображения, от сценария запроса к контроллеру.Как мне указать параметры?

Запрос: http://localhost:3002/posts/3

Ошибка:

ActiveRecord::UnknownAttributeError in PostsController#update

unknown attribute: picture

Rails.root: /Users/mjwong/workspace/testupload
Application Trace | Framework Trace | Full Trace

app/controllers/posts_controller.rb:63:in `block in update'
app/controllers/posts_controller.rb:62:in `update'

Запрос

Параметры:

{"utf8"=>"✓",
 "_method"=>"put",
 "authenticity_token"=>"1SYnIX+Y5PxM7PskzV/zocCJfh60tyGkUBdwu7OmNo8=",
 "post"=>{"title"=>"test",
 "content"=>"test",
 "picture"=>#<ActionDispatch::Http::UploadedFile:0x007fe346dbeaf8 @original_filename="Alva 2.jpg",
 @content_type="image/jpeg",
 @headers="Content-Disposition: form-data; name=\"post[picture]\"; filename=\"Alva 2.jpg\"\r\nContent-Type: image/jpeg\r\n",
 @tempfile=#<File:/var/folders/_w/24l2jy1563d2qqh8w0x4qmgh0000gn/T/RackMultipart20111030-3671-10zn91c>>},
 "commit"=>"Update Post",
 "id"=>"3"}

Модели:

class Post < ActiveRecord::Base
   has_many :uploads, :dependent => :destroy
   accepts_nested_attributes_for :uploads, :allow_destroy => true
end

class Upload < ActiveRecord::Base
   belongs_to :post
   has_attached_file :picture, :styles => {:thumb   => "100x100#",
                                           :small   => "300x300>",
                                           :large   => "600x600>" },
   :url => "/system/:class/:attachment/:id/:style/:basename.:extension",
   :path => ":rails_root/public/system/:class/:attachment/:id/:style/:basename.:extension"

   validates_attachment_size :picture, :less_than => 500.kilobytes
   validates_attachment_content_type :picture, :content_type => ['image/jpeg', 'image/png']
end

Контроллеры:

class HomeController < ApplicationController
   def index
      @upload  = Upload.new
   end
end

1 Ответ

0 голосов
/ 03 ноября 2011

Не забудьте запустить миграцию как rails g paperclip posts picture и запустить rake db:migrate

...