如何通过动态表单创建嵌套哈希
How to create a nested hash through dynamic forms
我正在探索我的应用程序的动态表单,目前我想构建一个嵌套哈希并且正在关注 Railscasts' ep 403。因此,以下是我的模型和表格:
型号:
class Product < ActiveRecord::Base
belongs_to :product_type
serialize :properties, Hash
end
表格:
<%= f.hidden_field :product_type_id %>
<%= f.fields_for :properties, OpenStruct.new(@product.properties) do |builder| %>
<% @product.product_type.fields.each do |field| %>
<%= render "products/fields/#{field.field_type}", field: field, f: builder %>
<% end %>
<% end %>
我得到的输出是:
"properties"=>{"Name"=>"Great Prod", "Remarks"=>"Super!", "Year"=>"2015"}
数据结构视图:
- properties
-- Name: "Great Prod"
-- Remarks: "Super!"
-- Year: "2015"
我要找的是:
"properties"=>{"2015"=>{"Name"=>"Great Prod", "Remarks"=>"Super!"}}
数据结构视图:
- properties
-- "2015"
--- Name: "Great Prod"
--- Remarks: "Super!"
如何实现上述目标?谢谢!
编辑 1:更正了上面的预期散列并添加了简单的数据结构视图。
所以我没有为年份使用哈希,而是为年份创建了一个新模型,然后从那里将每个属性存储为哈希。
我正在探索我的应用程序的动态表单,目前我想构建一个嵌套哈希并且正在关注 Railscasts' ep 403。因此,以下是我的模型和表格:
型号:
class Product < ActiveRecord::Base
belongs_to :product_type
serialize :properties, Hash
end
表格:
<%= f.hidden_field :product_type_id %>
<%= f.fields_for :properties, OpenStruct.new(@product.properties) do |builder| %>
<% @product.product_type.fields.each do |field| %>
<%= render "products/fields/#{field.field_type}", field: field, f: builder %>
<% end %>
<% end %>
我得到的输出是:
"properties"=>{"Name"=>"Great Prod", "Remarks"=>"Super!", "Year"=>"2015"}
数据结构视图:
- properties
-- Name: "Great Prod"
-- Remarks: "Super!"
-- Year: "2015"
我要找的是:
"properties"=>{"2015"=>{"Name"=>"Great Prod", "Remarks"=>"Super!"}}
数据结构视图:
- properties
-- "2015"
--- Name: "Great Prod"
--- Remarks: "Super!"
如何实现上述目标?谢谢!
编辑 1:更正了上面的预期散列并添加了简单的数据结构视图。
所以我没有为年份使用哈希,而是为年份创建了一个新模型,然后从那里将每个属性存储为哈希。