以嵌套形式保存数据的问题

时间:2017-07-17 16:27:50

标签: ruby-on-rails forms nested

我有一个设置页面/表单的网站。在这个页面中,我有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;正在增加,我无法理解为什么,如何以及在哪里。这使得嵌套只保存第一个元素,但之后不保存任何其他元素,并且在此之后不再显示任何其他元素。

我怎样摆脱这个?

提前谢谢

0 个答案:

没有答案