【发布时间】:2014-03-12 02:50:13
【问题描述】:
我有物品模型
class Item < ActiveRecord::Base
has_many :images, dependent: :destroy
accepts_nested_attributes_for :images, :allow_destroy => true
end
和图像模型
class Image < ActiveRecord::Base
belongs_to :item
has_attached_file :picture, :styles => {:medium => "600x600>", :thumb => "100x100>"}, :default_url => "/images/:style/missing.png"
end
而在控制器中,强参数去
def item_params
params.require(:item).permit(:name, :description, :price, images_attributes: [:picture, :_destroy])
end
正如 Cocoon READM 所说。
所以基本思想是一个项目有几个图像,而这些图像又具有这个回形针字段picture。然后用 Coccon 渲染表单
#views/admin/items/new.html.erb
<div class="field">
<div class="ui teal label">Imagen</div>
<%= f.fields_for :images do |image| %>
<%= render partial: 'image_fields', :f => image %>
<% end %>
</div>
#views/admin/items/_image_fields.html.erb
<div class="nested-fields">
<%= f.file_field :image, :class => "add-image-field" %>
<%= link_to_remove_association "Eliminar", f, :class => "ui red mini button" %>
</div>
在视图中似乎一切正常,但再查看发送到控制器的参数,有些问题:
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"AIogvRQuKNrAAOjM7YsnVQx7j2MwZ1VC3LiZy0cDDrU=",
"item"=>{
"name"=>"",
"description"=>"",
"price"=>"12345",
"images_attributes"=>{
"1394577880921"=>{
"image"=>#<ActionDispatch::Http::UploadedFile:0x00000003182718 @tempfile=#<Tempfile:/tmp/RackMultipart20140311-27326-19i0obp>, @original_filename="blue-diamond-rings.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"item[images_attributes][1394577880921][image]\"; filename=\"blue-diamond-rings.jpg\"\r\nContent-Type: image/jpeg\r\n">, "_destroy"=>"false"}}},
"commit"=>"Crear"}
images_attributes 后面那个奇怪的签名是什么?它正在破坏项目保存过程。
感谢您的指点!
【问题讨论】:
标签: ruby-on-rails paperclip nested-attributes cocoon-gem