Почему Rails образуют множественное число?
Я играю с ActiveStorage и пытаюсь загрузить некоторые файлы локально. Все отлично работает с кодом ниже, но только если я удалю multiple: true
из формы. Когда это находится в форме, я получаю непропущенную ошибку param "files" в консоли. Недопустимый параметр исходит из того, как форма передает хэш.
Без multiple: true
хэш перечисляет вложения в виде массива (это рабочая версия):
"article"=>{"files"=>[#<ActionDispatch::Http::UploadedFile:0x007fb4e8e287f0
Но с включенным он удаляет массив:
"article"=>{"files"=>#<ActionDispatch::Http::UploadedFile:0x007fb4eb07b7d0
Что вызывает поведение этой формы и как я могу это исправить?
Я получил пример кода от Engine Yard и вот код проекта:
<h3>Attach files to this post</h3>
<%= form_with model: @article, local: true do |f| %>
<div class="form-row">
<%= f.label :file_upload, 'Attach a file' %>
<%= f.file_field :files, multiple: true %>
</div>
<%= f.submit %>
<% end %>
<h3>Attached files</h3>
<% @article.files.each do |file| %>
<%= link_to file.blob.filename, url_for(file) %>
<% end %>
1 ответ
Когда вы используете multiple: true
you need to permit an array explicit in the article_params
за :files
:
Например:
params.require(:article).permit(:author, :text, files: [])
You can read more under Action Controller
Удачи!