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