Ruby on rails 使用活动存储上载文本文件,无需专用型号

Ruby on rails 使用活动存储上载文本文件,无需专用型号,ruby-on-rails,rails-activestorage,Ruby On Rails,Rails Activestorage,我有一个包含许多任务的任务资源。我想上传一个包含多个任务的文本文件,并将它们导入到任务模型中 我以前没有使用过活动存储(active storage,AS),所以我一直在梳理文档。我知道使用AS的标准方法是创建一个记录模型,其中每个记录都附带一个文件。在我的案例中,这意味着我可以创建一个进口商模型,并为每个进口操作创建一个记录。我觉得这是错误的方法-我更希望在任务控制器上有一个名为import的操作,它可以处理上传的文件,并将文件中的所有条目导入到任务模型中 我正在努力使这项工作与我已为此创建了

我有一个包含许多任务的任务资源。我想上传一个包含多个任务的文本文件,并将它们导入到任务模型中

我以前没有使用过活动存储(active storage,AS),所以我一直在梳理文档。我知道使用AS的标准方法是创建一个记录模型,其中每个记录都附带一个文件。在我的案例中,这意味着我可以创建一个进口商模型,并为每个进口操作创建一个记录。我觉得这是错误的方法-我更希望在任务控制器上有一个名为import的操作,它可以处理上传的文件,并将文件中的所有条目导入到任务模型中

我正在努力使这项工作与我已为此创建了一个表单:

<%= form_with(model: @task, action: 'start_upload', local: true) do |form| %>

  <%= form.file_field :attachments, multiple: false, direct_upload: true %>
<div class="form-group col-sm-6">
    <%= form.submit "Save",  :class => "btn btn-primary" %>
  </div>
<% end %>
因此,我从上传表单中获得的参数很简单:

{"authenticity_token"=>"wufWKGXHYX/obGYtKkL8SVSy5uSd/Z2XFLDxvLkDKdGQicsUPjEks9riYloTzorjhX8PgFUIj/BXV4VFi1ihKQ==", "attachments"=>"eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBEZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--c47b93b4598d01bf7f9b47caa0660fd39ab9b8df", "commit"=>"Save", "controller"=>"tasks", "action"=>"do_upload"}
我读到关于我应该如何做这样的事情:

    blob = ActiveStorage::Blob.create_after_upload!(
      io: params[:file],
      filename: params[:file].original_filename,
      content_type: params[:file].content_type
    )

    render json: { filelink: url_for(blob) }

但是我在参数中既没有文件也没有键——不过我看到它们输出到日志中

所以我正在寻找一些关于如何实现用例的指导。。。谢谢

    blob = ActiveStorage::Blob.create_after_upload!(
      io: params[:file],
      filename: params[:file].original_filename,
      content_type: params[:file].content_type
    )

    render json: { filelink: url_for(blob) }
ActiveStorage::Blob.service.path_for(params['key'])