Rails 3:用户创建的自定义表单?

我试图围绕如何允许用户创建包含所有字段类型的自定义表单。 如果有一颗gem会很棒,但我似乎无法在任何地方找到它。

所以我有这样的数据库设置:

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进行迭代并返回值,以及将它们与实际填充的表单相关联。

谢谢

我假设您有某种Form模型,然后是某种Field模型,以及Form has_many :fields 。 正确?

构建表单非常简单:检索表单,遍历所有字段,并根据类型,呈现正确的代码。 如果你使用formtastic或simple_form之类的东西,那么代码非常简单。

但要使其工作,在控制器内部,您将不得不创建一个虚拟对象,它具有所有字段的getter和setter。 你可以使用一个简单的哈希,或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 

虽然这是最干净的(您可以查询某个表单的填充字段的值),但这可能是一个过多的开销。