Ruby on rails 嵌套对象窗体未按预期工作

Ruby on rails 嵌套对象窗体未按预期工作,ruby-on-rails,ruby,forms,nested,Ruby On Rails,Ruby,Forms,Nested,我正在努力使视图正常工作。据我所知,我做的每件事都是对的,但它仍然不起作用 我在Rails 3 beta 3上 我的模型与预期的一样: class Recipe < ActiveRecord::Base has_many :ingredients, :dependent => :destroy accepts_nested_attributes_for :ingredients attr_accessible :name end class Ingredient <

我正在努力使视图正常工作。据我所知,我做的每件事都是对的,但它仍然不起作用

我在Rails 3 beta 3上

我的模型与预期的一样:

class Recipe < ActiveRecord::Base
  has_many :ingredients, :dependent => :destroy
  accepts_nested_attributes_for :ingredients
  attr_accessible :name
end
class Ingredient < ActiveRecord::Base
  attr_accessible :name, :sort_order, :amount
  belongs_to :recipe  
end
recipe = Recipe.new
recipe.ingredients_attributes = [ {:name=>"flour", :amount=>"1 cup"}, {:name=>"sugar", :amount=>"2 cups"}]
recipe.ingredients.size    # -> 2; ingredients contains expected instances
但是,我无法使用散列参数创建新的对象图:

我有什么地方做错了吗?还是Rails 3测试版有问题

更新 这是由配方中的
attr\u accessible:name
引起的错误。它不是Rails3特有的。

我已经验证过它不是Rails3 bug;我在2.3和3.0中都构建了,它在这两种情况下都像广告中宣传的那样工作。这意味着这与我的代码有关。

您是否尝试过保存记录,但仍然没有得到任何成分?从你们上面的例子来看,并没有保存,所以我认为这个食谱还并没有任何成分


作为对下面答案的回应,我相信您可以添加
attr\u属性
作为
attr\u可访问的属性
我找到了答案:配方中存在
attr\u可访问的:name
将破坏成分属性(从而破坏嵌套的模型形式)。移除它,一切正常。我已经验证了这个bug至少在Rails 2.3.2之前就存在


去提交…

我确实尝试过保存和不保存,但都没有效果。
params = { :name => "test", :ingredients_attributes => [ {:name=>"flour", :amount=>"1 cup"}, {:name=>"sugar", :amount=>"2 cups"}] }
recipe = Recipe.new(params)
recipe.name    # -> "test"
recipe.ingredients    # -> []; no ingredient instances in the collection