【问题标题】:Rails: best way to generate a form dynamicallyRails:动态生成表单的最佳方法
【发布时间】:2010-07-20 21:32:06
【问题描述】:

我正在创建一个应用程序,我想在其中添加有关来自企业系统的表字段的元数据。

我有一个 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 并将其用于我的新属性。还有其他方法可以创建此表单吗?

【问题讨论】:

    标签: ruby-on-rails ruby forms


    【解决方案1】:

    我认为您在正确的轨道上,属性的嵌套字段是要走的路。如果将来要引入新属性,您可能希望将属性定义存储在数据库表中,而不是在模型中定义它们。

    【讨论】:

      【解决方案2】:

      我通常不推荐面向文档的数据库系统,但这可能是 MongoDB 而不是传统 SQL 后端的理想选择。无论后端如何,嵌套表单都是要走的路。您可以构建一些助手,根据存储在数据库中的元数据将它们动态添加到表单中。

      【讨论】:

        【解决方案3】:

        您正在寻找的内容称为动态表单,您的问题的答案是 403-dynamic-forms 中的答案。 http://railscasts.com/episodes/403-dynamic-forms https://github.com/railscasts/403-dynamic-forms

        有点晚了,但我希望它可以帮助别人

        【讨论】:

          猜你喜欢
          • 2020-07-17
          • 1970-01-01
          • 2013-02-17
          • 1970-01-01
          • 2013-10-16
          • 2016-03-24
          • 1970-01-01
          • 2010-10-18
          • 1970-01-01
          相关资源
          最近更新 更多