1

我的模型:多态嵌套形式回形针对Rails 3.1.3

class NewsItem < ActiveRecord::Base 
    has_many :file_uploads, :as => :uploadable 
    accepts_nested_attributes_for :file_uploads, :allow_destroy => true 
end 


class FileUpload < ActiveRecord::Base 
    belongs_to :uploadable, :polymorphic => true 
    has_attached_file :upload, :styles => {:thumb => '100x100>'} 
end 

表单代码(嵌套NewsItem)

... 

<%= f.fields_for :file_uploads do |upload| %> 
    <div class="file_upload"> 
    <%= upload.file_field :upload %> 
    </div> 

    ... 

<% end %> 

... 

在提交时我得到以下错误:“未知属性:上传”。这里是参数:

{"utf8"=>"✓", 
"authenticity_token"=>"MBfxJ4XTizCXv3Mpu971VHCm60bS3Y84Kdxfe+VJD2w=", 
"news_item"=>{"title"=>"", 
"body"=>"", 
"published_date"=>"", 
"file_uploads_attributes"=>{"0"=>{"upload"=>#<ActionDispatch::Http::UploadedFile:0x000001070112a8 @original_filename="rails-dd352fc2630e5f9aa5685ef1d7fe5997.png", 
@content_type="image/png", 
@headers="Content-Disposition: form-data; name=\"news_item[file_uploads_attributes][0][upload]\"; filename=\"rails-dd352fc2630e5f9aa5685ef1d7fe5997.png\"\r\nContent-Type: image/png\r\n", 
@tempfile=#<File:/var/folders/hb/2bkct63171lck8d3sg0xfq0c0000gn/T/RackMultipart20111204-3216-71in7a>>, 
"name"=>"", 
"caption"=>""}}}, 
"commit"=>"Create News item"} 

我使用Rails的3.1.3和回形针“〜> 2.4”。

+0

我想你需要先构建一个file_upload对象,然后才能在nested_form中使用它。另外,也许你需要添加attr_accessible:file_uploads_attributes(不知道多态是如何工作的)。 – yoavmatchulsky

回答

0

重新启动rails应用程序解决了这个问题。我猜我安装了宝石,但没有重新启动,导致上述错误。获得的经验:安装宝石后总是重新启动。

1

我会避免使用类似“可上传”的通用术语,因为结果术语“上传”可能会发生碰撞。

youavmatchulsky的建议也很好 - 如果你有attr_accessible任何地方,你也需要使file_uploads_attributes可以访问。

此外,PARAMS不看等形式为多,所以我强迫它:多=>在调用真实的form_for

编辑:尽管这是应该,自动将发生,你可能不得不明确accept_nested_attributes_为加入,然后在加入模型accept_nested_attributes_for:uploadable - 我发现anaf很奇怪,像多态联接有时