Получение имени файла перед сохранением в ActiveStorage - Rails 5.2.1 - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь получить имя файла, загруженного пользователем, прежде чем ActiveStorage продолжит его сохранение.Форма генерируется с использованием form_with и показана ниже:

<%= form_with model: upload do |form| %>
  <div class="">
    <%= form.file_field :files, multiple: true, direct_upload: true, required: true %>
    <%= form.label :files, '', class: 'icon ion-ios-cloud-upload' do %>
      <span>click the icon to select files</span>
    <% end %>

    <div class="actions">
      <%= form.submit "Upload", class: "btn btn-primary" %>
    </div>
 </div>
<% end %>

Я попытался получить доступ к params[:upload][files] и вызвать .original_filename, как описано здесь , но я получаю ошибкуNoMethodError: undefined method `original_filename' for #<String:0x007fac77fd18c8>.

Файл возвращается в виде строки, когда я проверяю параметры, так как мне получить имя файла или как заставить работать original_filename?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Я наконец смог получить имя файла, выполнив file.blob.filename после того, как файл был прикреплен.

0 голосов
/ 27 ноября 2018

Вам необходимо добавить multipart: true к вашей форме.

https://guides.rubyonrails.org/form_helpers.html#uploading-files

Другое дело, что если у вас есть несколько файлов, у вас будет несколько имен файлов.

params[:upload][files].each do |file|
  file.original_filename
end
...