报错记录:uploading files with form_tag

问题描述:

表单中上传文件时遇到的一个问题:

正常情况下,上传文件后,传递的params应该是这样:

1
"attachments_attributes"=>[{"file"=>#<ActionDispatch::Http::UploadedFile:0x007f9fcd2b4188 @tempfile=#Tempfile:/var/folders/w4/qw3_jsfs0572hmqcl34v9xx00000gn/T/RackMultipart20180918-7216-12k5se6.jpg, @original_filename="sunset.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name="attachments_attributes[file]"; filename="sunset.jpg"\r\nContent-Type: image/jpeg\r\n">}]

但是我的却是这样:

1
"attachments_attributes"=>[{"file"=> "sunset.jpg"}]

解决:

解决方法其实就在ROR文档中。【果然,文档要细细读啊!】

action view form helpers中明明白白提到了:

image-20180919092904541

代码中使用了form_tag,如果需要上传文件,必须添加multipart: true。

当form_tag添加了multipart: true ,等同于:

1
2
form_tag('/upload', multipart: true)
# => <from action ="/upload", enctype="multipart/form-data" method="post">

而当表单中含有上传文件的控件时,必须使用enctype=”multipart/form-data”

参考:

action view form helpers

form_tag