好吧,我花了24小时的时间试图弄明白这一点,没有运气。
我使用simple_form和一个带有accepts_nested_attributes_for的嵌套模型进行了非常简单的设置:
= f.simple_fields_for :images, Image.new do |fi|
%label.file
= fi.input_field :image, as: :file, multiple: true
%span.file-custom
那里没什么棘手的。表单显示,我可以选择多个文件。但是,当我尝试提交时,BAM。这是Rails 4.2。它的参数很强。以下是我为def material_params
params.require(:material).permit(:name, :url, :description, :subject_id, :universal_id, :universal_id_type, :short_description, :expires_on, :submitter_id, site_ids: [], instructor_ids: [], instructors_attributes: [:name]).permit(images_attributes: [:image, :_destroy, :id])
params.require(:material).permit(:name, :url, :description, :subject_id, :universal_id, :universal_id_type, :short_description, :expires_on, :submitter_id, site_ids: [], instructor_ids: [], instructors_attributes: [:name]).permit({images_attributes: [:image, :_destroy, :id]})
params.require(:material).permit(:name, :url, :description, :subject_id, :universal_id, :universal_id_type, :short_description, :expires_on, :submitter_id, site_ids: [], instructor_ids: [], instructors_attributes: [:name]).permit({images_attributes: [:image, :_destroy, :id]}).tap do |whitelisted|
whitelisted[:images_attributes] = params[:material][:images_attributes]
end
params.require(:material).permit(:name, :url, :description, :subject_id, :universal_id, :universal_id_type, :short_description, :expires_on, :submitter_id, site_ids: [], instructor_ids: [], instructors_attributes: [:name]).permit(:images_attributes).tap do |whitelisted|
whitelisted[:images_attributes] = params[:material][:images_attributes]
end
params.require(:material).permit(:name, :url, :description, :subject_id, :universal_id, :universal_id_type, :short_description, :expires_on, :submitter_id, site_ids: [], instructor_ids: [], instructors_attributes: [:name]).permit(images_attributes: [:image, :_destroy, :id]).tap do |whitelisted|
whitelisted[:images_attributes] = params[:material][:images_attributes]
end
以下是POST的示例:
{"utf8"=>"✓",
"_method"=>"patch",
"authenticity_token"=>"mWI5pvoejIQhLKHBmr0/XHKYonhR67GKAvm4j4PYkLRqC6VnmmycEafqnwOXqJdf/n9Mk65EfCnSzbMiHPqv0A==",
"material"=>{"submitter_id"=>"1",
"name"=>"Official Guide to the ACT",
"url"=>"http://amazon.com/act",
"short_description"=>"",
"expires_on"=>"2015-12-16",
"description"=>"",
"universal_id"=>"",
"universal_id_type"=>"ISBN",
"instructor_ids"=>["",
"1",
"3"],
"images_attributes"=>{"0"=>{"_destroy"=>"0",
"id"=>"5"},
"1"=>{"image"=>[#<ActionDispatch::Http::UploadedFile:0x007ff01e6481e0 @tempfile=#<Tempfile:/var/folders/dw/pz_hxz2x43gdqnphs6h6skr40000gn/T/RackMultipart20151216-86036-18d4wsp.jpg>,
@original_filename="il_570xN.760452533_rc6v.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"material[images_attributes][1][image][]\"; filename=\"il_570xN.760452533_rc6v.jpg\"\r\nContent-Type: image/jpeg\r\n">,
#<ActionDispatch::Http::UploadedFile:0x007ff01e6481b8 @tempfile=#<Tempfile:/var/folders/dw/pz_hxz2x43gdqnphs6h6skr40000gn/T/RackMultipart20151216-86036-80v4nh.jpg>,
@original_filename="imgres.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"material[images_attributes][1][image][]\"; filename=\"imgres.jpg\"\r\nContent-Type: image/jpeg\r\n">]}},
"instructors_attributes"=>{"2"=>{"name"=>""}},
"site_ids"=>["",
"1"]},
"commit"=>"Update Material",
"id"=>"official-guide-to-the-act"}
我总是得到:
found unpermitted parameter: images_attributes