我有一个模型“ 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]
?
我通过将选择字段的名称更改为:解决了该问题:
= f.select :category_id, options_for_select(Category.all.pluck('name')), {}, {name: 'cell[][category_id]'}