Ruby on rails 嵌套模型抛出未定义的方法错误

Ruby on rails 嵌套模型抛出未定义的方法错误,ruby-on-rails,nested-forms,Ruby On Rails,Nested Forms,我已经跟随尝试这个嵌套模型/表单,并且已经在这个代码上花费了2个多小时,但是没有用。我忽略了什么 我有以下型号: class Workout < ActiveRecord::Base belongs_to :user has_many :performed_exercises, :dependent => :destroy accepts_nested_attributes_for :performed_exercises end class PerformedExer

我已经跟随尝试这个嵌套模型/表单,并且已经在这个代码上花费了2个多小时,但是没有用。我忽略了什么

我有以下型号:

class Workout < ActiveRecord::Base
  belongs_to :user
  has_many :performed_exercises, :dependent => :destroy
  accepts_nested_attributes_for :performed_exercises
end

class PerformedExercise < ActiveRecord::Base
  belongs_to :workout
  belongs_to :exercise
  has_many :performed_sets, :dependent => :destroy
  accepts_nested_attributes_for :performed_sets
end

class PerformedSet < ActiveRecord::Base
  belongs_to :performed_exercise
end
运行测试并在浏览器中调用控制器时,出现以下错误:

undefined method `performed_sets' for #<Class:0x7f6ef6fa6560>
未定义的方法“已执行的集合”#
提前感谢您的帮助-我的RoR能力不再让我惊讶了

编辑
fflyer05:我尝试使用与RailsCast相同的代码对集合进行迭代,并尝试在已执行的_练习[0]上构建已执行的_集,但不起作用。执行其他操作时,我会得到一个未初始化的常量PerformedExercise::PerformedSet error

应该对单个对象调用模型方法。您正在对不起作用的对象集合调用它们,
@workout.performed\u exercises[0]。performed\u set
将起作用

请注意Rails cast 196中的代码:


# surveys_controller.rb
def new
  @survey = Survey.new
  3.times do
    question = @survey.questions.build
    4.times { question.answers.build }
  end
end
为了构建表单,您必须遍历每个嵌套方法

如果代码是这样的:


for performed_exercise in @workout.performed_exercises
     for performed_set in performed_exercise.performed_sets
      # something interesting
     end
end
如果不起作用,我会检查您的模型文件名是否正确(rails需要它们是单数),在您的情况下,您应该为这些相应的模型执行
workout.rb
performed\u exercise.rb
performed\u set.rb


您的关系定义看起来是正确的,所以我能想到的唯一可能是错误的文件名。

非常感谢。我的PerformedSet模型文件名是在多个集合中执行的。

for performed_exercise in @workout.performed_exercises
     for performed_set in performed_exercise.performed_sets
      # something interesting
     end
end