我有一个设置页面/表单的网站。在这个页面中,我有3个嵌套表单,我的问题涉及所有这三个。
这些嵌套表单允许用户讲述他所擅长的专业技能(HTML,PHP,Ruby,您可以将其命名)。有了它,他们可以选择0到100之间的数字,也可以选择一种颜色。但就目前而言,我想做的就是能够保存这些数据。
以下是我如何继续保存这些嵌套表单之一(另外两个完全相同,只有很小的差异以区分彼此:
setting.rb和stat1.rb(型号)
# GET /settings/new
def new
@setting = Setting.new
@setting.stat1s.build
@setting.stat2s.build
@setting.stat3s.build
end
# GET /settings/1/edit
def edit
@setting.stat1s.build
@setting.stat2s.build
@setting.stat3s.build
end
# ...
private
def setting_params
params.require(:setting).permit( [...], stat1s_attributes: [:id, :_destroy, :setting_id, :percentage, :name, :color])
settings_controller.rb(相关部分)
$('form').on('click', '.add_stat1, function(event) {
$('.stat1').append($(this).data('stat1'));
return event.preventDefault()
});
application.js(相关部分)
<input type="text" name="setting[stat1][name]" id="setting_stat1_name />
这是我的问题:当我加载表单时,嵌套表单默认生成以下内容:<input type="text" name="setting[stat1s_attributes][69856526209200][name]" id="setting_stat1s_attributes_69856526209200_name">
。但是,当我添加新字段时,生成的html如下所示:{{1}}
正如你所看到的,不知何故,&#34; _attributes&#34;正在增加,我无法理解为什么,如何以及在哪里。这使得嵌套只保存第一个元素,但之后不保存任何其他元素,并且在此之后不再显示任何其他元素。
我怎样摆脱这个?
提前谢谢