Ruby on rails 3 来自深层嵌套哈希的表单_

Ruby on rails 3 来自深层嵌套哈希的表单_,ruby-on-rails-3,nested-attributes,Ruby On Rails 3,Nested Attributes,我正在寻找一种方法,引入一个散列,并将其与表单_一起用于。我在玩Hashie::Mash来创建一个伪对象,它似乎可以正常工作。但它遇到了深嵌套键的问题 @mash = Hashie::Mash.new({:level_one => "foo", :same_level => {:level_two => "bar"}}) 然后用表格_表示 = form_for @mash do |m| = m.text_field :level_one = m.fields_for

我正在寻找一种方法,引入一个散列,并将其与表单_一起用于。我在玩Hashie::Mash来创建一个伪对象,它似乎可以正常工作。但它遇到了深嵌套键的问题

@mash = Hashie::Mash.new({:level_one => "foo", :same_level => {:level_two => "bar"}})
然后用表格_表示

= form_for @mash do |m|
  = m.text_field :level_one
  = m.fields_for :same_level do |s|
    = s.text_field :level_two
级别1的文本字段将填充“foo”,但级别2为空


本质上,我需要将散列包装在某种类型的对象中,但是如何处理嵌套的散列呢?我正在尝试从yaml文件加载设置,在表单中修改它们,然后将它们保存回去。

您的
@mash.same\u level.level\u two
属性是否返回字符串?您确定此初始化哈希已正确转换为嵌套属性吗?如果您使用
接受嵌套的属性,Rails方式将是
相同的级别属性
,但可能您自己定义了一个访问器?是@mash.same\u level.level\u two返回“bar”,但不接受仅为活动记录的嵌套属性吗?