如何通过动态表单创建嵌套哈希

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:更正了上面的预期散列并添加了简单的数据结构视图。

所以我没有为年份使用哈希,而是为年份创建了一个新模型,然后从那里将每个属性存储为哈希。