Rails: лучший способ динамически генерировать форму - PullRequest
1 голос
/ 21 июля 2010

Я создаю приложение, в которое хочу добавить метаданные о полях таблицы из системы предприятия.

У меня есть модель table_structure, которая получает информацию об определении таблицы, например:

table_name
field_name
Field_type
field_length
...

конкретное поле может существовать в нескольких таблицах, таких как:

tableA
fieldX

tableB
fieldX

независимо от таблицы, я хочу добавить атрибуты в поле, чтобы

fieldX :has_many :attributes

и модель атрибута будет

:field
:attribute
:value

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

Я думал о том, чтобы добавить этот метод в модель атрибутов и каким-то образом выполнить их итерацию и создать форму.

  def self.attributes_types
    {'Business Essential' => {:field_type=>:radio,:values=>[:y,:n,nil],:default_value=>nil}}

    {'Owner' => {:field_type=>:text}}
  end

Является ли Nested формой пути? Я не добавляю поля, просто атрибуты к полям, поэтому я могу передать params [: field] в new и использовать его для моих новых атрибутов. Есть ли другой способ создать эту форму?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2011

Обычно я не рекомендую ориентированные на документы системы баз данных, но это может быть хорошим кандидатом для MongoDB вместо традиционного SQL-интерфейса.Независимо от серверной части, вложенные формы - это путь.Вы можете создать несколько помощников для динамического добавления их в формы на основе метаданных, хранящихся в вашей базе данных.

0 голосов
/ 03 октября 2014

То, что вы ищете, называется динамическими формами, и ответ на ваш вопрос - ответ в 403-динамических формах. http://railscasts.com/episodes/403-dynamic-forms https://github.com/railscasts/403-dynamic-forms

Это немного поздно, но я надеюсь, что это поможет кому-то еще

0 голосов
/ 21 июля 2010

Я думаю, что вы на правильном пути, и вложенные поля для атрибутов - это путь.Если в будущем будут введены новые атрибуты, вы можете сохранить определения атрибутов в таблице базы данных, а не определять их в модели.

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