我正在创建一个应用程序,我想从企业系统中添加有关表字段的元数据。
我有一个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
嵌套是否可行?我不是在字段中添加字段,只是属性,所以我可以将params [:field]传递给 new 并将其用于我的新属性。还有另一种方法来创建这种形式吗?
答案 0 :(得分:0)
我认为你走在正确的轨道上,属性的嵌套字段是要走的路。如果将来要引入新属性,您可能希望将属性定义存储在数据库表中,而不是在模型中定义它们。
答案 1 :(得分:0)
我通常不推荐面向文档的数据库系统,但这可能是MongoDB的一个很好的候选者,而不是传统的SQL后端。无论后端如何,嵌套表单都是可行的方法。您可以构建一些帮助程序,以根据存储在数据库中的元数据将它们动态添加到表单中。
答案 2 :(得分:0)
您正在寻找的是动态表单,您的问题的答案是以动态形式表达的403。 http://railscasts.com/episodes/403-dynamic-forms https://github.com/railscasts/403-dynamic-forms
它有点晚了,但我希望它可以帮助别人