Ruby on rails 嵌套模型抛出未定义的方法错误
我已经跟随尝试这个嵌套模型/表单,并且已经在这个代码上花费了2个多小时,但是没有用。我忽略了什么 我有以下型号: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
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