Ответ 1
Я предполагаю, что у вас есть какая-то модель Form
, а затем какая-то модель Field
и Form has_many :fields
. Правильно?
Построение формы, чем довольно просто: получить форму, перебрать все поля и в зависимости от типа сделать правильный код. Если вы используете что-то вроде formtastic или simple_form код довольно прост.
Но чтобы заставить его работать, внутри вашего контроллера вам придется создать фиктивный объект, у которого есть геттер и сеттер для всех полей. Вы можете использовать простой хеш для этого или OpenStruct (лучше). Итерация по полям задает хэш с пустыми или значениями по умолчанию.
Думаю, вы также хотите сохранить результаты формы? Я думаю, что самый простой способ - использовать такую модель
t.form_id :integer
t.fields_data :text
И сохраните введенные данные в текстовом поле, например. json или еще что-то. Вы также можете сделать что-то вроде
class FormData
belongs_to :form
end
class FormDataField
belongs_to :form_data
belongs_to :form_field
end
в то время как это самое чистое (вы можете запрашивать значения заполненных полей для определенной формы), возможно, это слишком много накладных расходов.