我正在尝试使用Carrierwave和Dropzone.js上传多个图像,但是当我提交表单时出现以下错误 .
请注意,没有dropzone.js的相同表单工作正常,这意味着我只是使用HTML5上传多个图像 .
请参阅下面我提交表单时创建的哈希(通过使用dropzone的ajax)
“project_images_attributes”=> [{ “图像”=
[#,@ original_filename =“artist4.jpg”,@ content_type =“image / jpeg”,@ headers =“Content-Disposition:form-data; name = \”project [project_ images_attributes] [] [image] [] \“; filename = \”artist4.jpg \“\ r \ nContent-Type:image / jpeg \ r \ n”>,#,@ original_filename =“feed1.jpg”,@ con tent_type =“image / jpeg”, @ headers =“Content-Disposition:form-data; name = \”project [project_images_attributes] [] [image] [] \“; filename = \”feed1.jpg \“\ r \ nConContent-Type:image / jpeg \ r \ n“>,#,@ original_filename =”gallery1.jpg“,@ content_type =”image / jpeg“,@ headers =”Content-Disposition:form-data; name = \“project [project_images_attributes] [] [image ] [] \“; filename = \”gallery1.jpg \“\ r \ nContent-Type:image / jpeg \ r \ n”>]}]},“project-vide o”=> [“”],“ commit“=>”创建项目“}
Unpermitted parameters: image
请注意我已将控制器中的图像参数列入白名单,并且它使用HTML 5但不使用ajax和dropzone.js
有谁知道如何解决这一问题 ?
谢谢
2 回答
我最终在哪里进行语境化的代码:
强大的参数不断回归未经许可的参数:照片 . 看着控制台,我看到了参数被编号,而我能够访问它们的唯一方法就是按数字潜入 . 尽管如此,试图直接将它们传递给
create
返回错误 . 这是因为模型不够聪明,不知道它需要遍历每个附加图像 . 所以:我的控制器返回一个id列表,并在拥有PinImage(Pin)的模型的隐藏字段中捕获 . (这是通过ajax成功回调完成的,通过dropzone提交PinImages . )因此,当提交主模型时,我还必须处理那里的关联,但我发现我更喜欢通过nested_attributes_for混淆 . 因人而异 .
看看您提交表单的方式 . 是form.submit吗?上传完成后,Dropzone会自动通过ajax提交文件