Rails 3.1与jQuery的文件上传和嵌套的回形针

问题描述:

我使用Rails 3.1与Paperclip和寻找一种方法来实现jQuery的文件上传。
Rails 3.1与jQuery的文件上传和嵌套的回形针

我通过下面的例子已经基本工作设置:
blueimp jquery=file-upload

但是,当我介绍这里上传嵌套帖子内嵌套的属性模型,它分崩离析。给出的错误是“未知属性:图片”。了解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 
+0

喜迈克尔,是这仍然是一个问题?视图是什么样的? – *r

不要忘了运行迁移像rails g paperclip posts picture和运行rake db:migrate