保存自定义表单的最佳方法? (轨道/骨架)

时间:2015-01-11 20:22:45

标签: ruby-on-rails backbone.js

我正在构建一个工具,允许我的应用上的管理员用户创建任意长度的自定义数据收集表单。这些表单将发送给应用程序的用户,以便轮询结果。

数据库结构非常基础,如下所示:

表单字段子字段

表格是顶级的。字段belongs_to表单和子字段belongs_to字段。

表单has_many字段和字段has_many子字段。

我希望能够从上到下保存。首先,我将保存表单,并使用返回的ID作为Fields的form_id。同样,我希望逐个保存字段,并使用返回的ID在相应的子字段中用作field_id

这些表单是使用动态表单创建的,管理员用户可以通过单击“添加字段”或“添加子字段”来添加字段和子字段。

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我最终使用了名为'backbone-nested-attributes'的宝石,效果很好。它允许您传入要与属性同时保存的所有内容(表单,字段和子字段)。所以我的表单控制器看起来像这样:

class Api::FormsController < ApiController
  def create
    form = Form.new(form_params)
    if form.save
      render json: form, root: false
    else
      render json: {message: form.errors}, status: :bad_request
    end
  end

  private

  def form_params
    params.permit(:name, :parent_id, :completed, :master_copy, fields_attributes: [:name, :field_type, :required, subfields_attributes: [:value, :selected, :name]])
  end
end