gpt4 book ai didi

ruby-on-rails - 带有多个文件的 Rails file_field_tag 向 Controller 提供随机字符串

转载 作者:行者123 更新时间:2023-12-04 13:02:53 33 4
gpt4 key购买 nike

我正在构建一个表单来接受多个图像。这是 Slim 中的表格

  = form_tag(product_images_path(product_id: product.id), multipart: true, remote: true) do
label Add Image
= file_field_tag(:attachment, multiple: true, name: 'image[attachment]', direct_upload: true, class: 'drop-target')
= submit_tag 'Upload'

当我测试这个表单并附加一个文件并且数据到达 Controller 时,附件变成了某种随机字符串而不是 ActionDispatch::Http::UploadedFile 的数组。正如我所料。这是检查 params的结果在控制台中:
<ActionController::Parameters {
"utf8"=>"✓",
"authenticity_token"=>"....",
"image"=>{"attachment"=>"eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBOQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--79ca56f5342586a657d079d36e45f769dacc9356"},
"commit"=>"Upload",
"controller"=>"rics_channels/admin/images",
"action"=>"create",
"product_id"=>"5355"}
permitted: false>

我不知道如何正确格式化/处理 image[attachment]的。看到我做错了什么吗?

最佳答案

您使用的是直接上传(请注意, direct_upload: true 被传递给 file_field_tag )。提交表单后,Active Storage 的 JavaScript 将文件直接上传到您的存储服务,绕过您的应用程序。代替实际文件,应用程序会收到一个签名的 blob ID。

您可以将此签名的 blob ID 传递给 attach (这里我假设 file 是您附件的名称):

image.file.attach(params[:image][:attachment])

…或者用它来实例化一个新记录:
image = Image.new(file: params[:image][:attachment])

Active Storage 使用签名的 blob ID 查找相应的 blob 并将其附加到您的记录。

关于ruby-on-rails - 带有多个文件的 Rails file_field_tag 向 Controller 提供随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51163363/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com