ActiveStorage中的文件可以在没有父代(型号)ID的情况下上传吗?

时间:2020-08-27 11:52:52

标签: ruby-on-rails ruby file upload filepond

情况:

  • 导轨:6
  • 红宝石:2.5.3
  • 提交:1.0.0
  • 我有一个has_many_attached:attachments的模型(父母)。当我 创建一个新的parent,有一个基本形式和FilePond jquery 库以更轻松地管理拖放操作。

问题:

使用文件创建新的父对象。

  • 据我了解,FilePond不会将文件附加到表单,因此我 收到InvalidSignature错误。如果我从参数中删除:attachments, 父级创建成功,尽管删除前的params [:attachments]为零。

因此,我想生成新的Parents,并在创建过程中将文件附加到其中一些文件(如果用户选择的话)。

尝试:

  • 所以我能够在 更新 父级时上传文件,因为那样我 具有 Parent.id ,我能够为FilePond生成特定的链接。
  • 我尝试过先上传父级文件,并在成功上传后附加文件。

因此,我希望后者可以尝试,因为它似乎是最合适的选择。

parent_form

= simple_form_for(parent, url: [parent], remote: true) do |f|
= f.file_field :attachments, multipart: true, id: "filepond"

parent.js

  $('#document-modal').on('shown', function() {
    var inputElement = document.querySelector('input[type="file"]');
    var pond = FilePond.create(inputElement);

    FilePond.setOptions({
      allowMultiple: true,
      instantUpload: false
    });
  });

parent_controller

  def create
    params[:parent].delete :attachments
    @parent = Parent.new(parent_params)
    render('errors') unless @parent.save
  end

  def update
    params[:parent].delete :attachments
    @parent.update(parent_params)
  end

  def create_attachment
    @parent = Parent.find(params[:parent_id])
    @parent.attachments.attach(params[:parent][:attachments])
    head :ok
  end

0 个答案:

没有答案
相关问题