带Rails 3的动态场
|
我有一个设计要解决的问题。
我正在构建一个Rails 3应用程序,该应用程序将容纳来自各种不同公司的产品。我想定义大量字段,每种产品都可以选择适用于它的字段。
字段类型将是单行文本字段,多行文本字段,单选或选择选项,复选框选项,日期,持续时间或更自定义的内容。我需要能够根据此类型动态呈现字段以进行编辑和显示。
我当前的想法是使用MongoDB并将所有内容存储在产品的哈希中。
class Product
include Mongoid::Document
def self.field_definitions
[{ :name => :code, :label => \'Code\' },
{ :name => :itinerary, :type => :multiline, :label => \'Itinerary\', :category => :tour},
{ :name => :infant_age, :type => :age_range, :label => \'Infante age range\', :category => :tour},
...
]
end
embedded_in :company
field :field_data, type:Hash
end
然后渲染新的/编辑的字段,例如:
= form_for Product.new do |f|
= f.fields_for :field_data do |f|
%ol
- Product.field_definitions.each do |field_definition|
%li
= f.label field_definition[:name], field_definition[:label]
= render \"products/edit_fields/#{field_definition[:type] || \'singleline\'}\", :f => f, :field_definition => field_definition
= f.submit \"Create\"
然后,我对每种字段类型都有部分内容进行编辑和显示。
创建后,产品在mongodb中可能如下所示:
{\"field_data\":{
\"itinerary\": \"FUN!\",
\"code\": \"AHKDYK\",
\"infant_age\": { \"max\": 2, \"min\": 0 }
}}
这是一个好方法吗?
没有找到相关结果
已邀请:
2 个回复
朗排谎纷瘟
漂汀拦