2015-01-11 6 views
0

Я создаю инструмент, который позволит пользователю admin в моем приложении создавать пользовательские формы сбора данных любой длины. Эти формы будут отправлены пользователям приложения для опроса результатов.Лучший способ сохранения пользовательской формы? (Rails/Backbone)

Структура базы данных является довольно основным, следующим образом:

Есть Формы, Поля и Подполя.

Форма верхнего уровня. Поле belongs_to a Форма и подполе belongs_to a Поле.

Форма has_many Поля и поля has_many Подполя.

Я хочу, чтобы иметь возможность сохранять сверху вниз. Во-первых, я сохраню форму и использую идентификатор, который возвращается для использования в качестве полей form_id для полей. Аналогичным образом, я хочу сохранить поля по-одному и использовать возвращаемый идентификатор для использования в качестве field_id в соответствующем подполе.

Эти формы создаются с использованием динамической формы, в которой пользователи admin могут добавлять поля и подполья, нажимая «Добавить поле» или «Добавить подполе».

Каков наилучший подход для решения этой проблемы?

ответ

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 
Смежные вопросы