Ruby on rails 3 Formtastic筑巢帮助

Ruby on rails 3 Formtastic筑巢帮助,ruby-on-rails-3,formtastic,Ruby On Rails 3,Formtastic,我正在努力熟悉以下情况 例程.rb class Routine < ActiveRecord::Base has_many :exercise_routines has_many :exercises, :through => :exercise_routines accepts_nested_attributes_for :exercise_routines end class ExerciseRoutine < ActiveRecord::Base bel

我正在努力熟悉以下情况

例程.rb

class Routine < ActiveRecord::Base
  has_many :exercise_routines
  has_many :exercises, :through => :exercise_routines
  accepts_nested_attributes_for :exercise_routines
end
class ExerciseRoutine < ActiveRecord::Base
  belongs_to :exercise
  belongs_to :routine
  has_many :attempts
  accepts_nested_attributes_for :attempts
end
我有两个问题: 1) 如果我通过控制台手动添加,这将成功呈现每个例程的尝试,但如果我尝试更新它,我将得到:“未知属性:练习_例程”,我意识到,因为参数:

{"utf8"=>"✓",
 "_method"=>"put",
 "authenticity_token"=>"51fZRe1wKRQoVUz+lGlldd4DmMODGHN203Htc4DEi0Y=",
 "routine"=>{"exercise_routine"=>{"attempts_attributes"=>{"0"=>{"reps"=>"5",
 "id"=>"1"},
 "1"=>{"reps"=>"1555",
 "id"=>"2"},
 "2"=>{"reps"=>""}}}},
 "commit"=>"Update Routine",
"id"=>"3"}`
看起来不对劲。它应该引用带有id的练习\ U例程

2) 希望能够同时添加尝试

@routine.exercise_routines.each do |er|
  1.times {er.attempts.build}
end

正确渲染它,但我当然遇到了相同的参数问题。我不是做了一些愚蠢的错误,就是做这种类型的多集合嵌套比我想象的要困难得多?

您没有正确地使用
字段。第一个参数必须是用于嵌套字段的关联。然后,第二个模型可以是用于关联值的/单个模型的集合

= routine.semantic_fields_for :exercise_routines, exercise_routine do |f|
另外,我建议不要在块内使用form builder local隐藏第一个本地
练习\例程。我会使用
@routine.exercise_routines.each do | exercise_routine |
表单,而不是
for
循环

= routine.semantic_fields_for :exercise_routines, exercise_routine do |f|