Rails 3: Пользователь создал пользовательские формы? - PullRequest
11 голосов
/ 09 февраля 2011

Я пытаюсь понять, как разрешить пользователю создавать собственные формы со всеми типами полей.Если есть драгоценный камень, который был бы великолепен, но я не могу найти его нигде.

Итак, у меня есть настройка БД, подобная этой:

  t.integer :form_id
  t.string :name
  t.string :hint
  t.integer :position
  t.string :field_type
  t.boolean :required
  t.integer :size
  t.boolean :multiple
  t.text :values
  t.timestamps

И это в значительной степени то, гдеЯ.Я не могу думать о том, как выполнить итерацию через field_type и вернуть значения, а также связать их с заполненными формами.

Спасибо

1 Ответ

12 голосов
/ 09 февраля 2011

Я предполагаю, что у вас есть какая-то модель 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

Хотя это самый чистый (вы можете запросить значения заполненных полей для определенной формы), это может быть слишком много накладных расходов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...