如何将多个选择选项字段的值发送到控制器

问题描述 投票:2回答:1

我有一个模型“ Cell”的表格,可以使用javascript进行克隆。我既有文本字段,又有可克隆形式的选择字段。由于克隆的元素生成一个字符串数组,因此我通过使用cell[ ]['name']格式更改了字段的name属性,将文本元素作为数组发送。但是,滑轨中的f.select字段带有默认名称属性cell[category_id]。因此,我不断收到错误:

Invalid request parameters: expected Hash (got Array) for param `cell'.

这是代码:

= form_for @cell do |f|
  #clone
    .form.rowField
      = f.text_field :name, name: 'cell[][name]', class: "form-control"
      = f.select :category_id, options_for_select(Category.all.pluck('name'))
      i.fas.fa-plus-circle#addrow
    = f.submit "Save", class: "button btn btn-primary"

用于克隆表单的javascript代码是

$('#addrow').click(function () {
        var row = document.querySelector('.rowField');
        var cloneRow = row.cloneNode(true);
        var target = document.querySelector('#clone');
        cloneRow.querySelectorAll('input').forEach(function (input) {
            input.value = "";
        });
        target.appendChild(cloneRow);
    });

是否可以将选择标签的名称属性从cell[category_id]更改为cell[][category_id]

javascript arrays ruby-on-rails hash ruby-on-rails-6
1个回答
1
投票

我通过将选择字段的名称更改为:解决了该问题:

= f.select :category_id, options_for_select(Category.all.pluck('name')), {}, {name: 'cell[][category_id]'}
© www.soinside.com 2019 - 2024. All rights reserved.