为什么Rails形成多个:真正的改变提交的参数形式

时间:2018-01-31 14:17:57

标签: ruby-on-rails forms rails-activestorage

我正在玩ActiveStorage并试图在本地上传一些文件。使用下面的代码,一切都很顺利,但前提是我从表单中删除了multiple: true。当它在表单上时,我得到一个未经许可的参数"文件"控制台中出错。不允许的参数来自表单提交哈希的方式。

没有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 个答案:

答案 0 :(得分:2)

当您使用multiple: true时,您需要在article_params :files中明确允许使用数组:

例如:

params.require(:article).permit(:author, :text, files: [])

您可以在Action Controller

下阅读更多内容 祝你好运!