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


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

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

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

谢谢


4648
2018-02-09 07:01


起源

有没有想出一个很好的解决方案呢?试图做同样的事情。 - noel_g
@noel_g见下面的答案 - kkampen


答案:


我假设你有某种 Form 模特,然后某种 Field 模特,和 Form has_many :fields。正确?

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

但要使其工作,在控制器内部,您将不得不创建一个虚拟对象,它具有所有字段的getter和setter。你可以使用一个简单的哈希,或OpenStruct(更好)。迭代字段时,使用空值或默认值设置哈希值。

我想你还想保存表格的结果?我认为最简单的方法是使用这样的模型

t.form_id :integer
t.fields_data :text

并将输入的数据存储在例如文本字段中。杰森什么的。 你也可以这样做

class FormData
  belongs_to :form
end

class FormDataField
  belongs_to :form_data
  belongs_to :form_field
end

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


12
2018-02-09 07:50



我明白你的意思,它越来越清晰。你碰巧有一个样本MVC还是这个?在form_data中,我将如何将其与每个form_field相关联?如果你知道任何宝石或教程,我会非常感激。谢谢。 - kkampen
kkampen,看起来那里什么都没有。 20分钟的谷歌搜索,这是创建自定义表单的最佳资源。我想找到一个开源解决方案,但看起来不像那里有一个。 - Ramon Tayag