Ruby on rails 从我的.each循环中获得恶意迭代
我正在学习ruby on rails并大致遵循以下指南: 我有一个关于成就结果的循环(指南示例中的注释):Ruby on rails 从我的.each循环中获得恶意迭代,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在学习ruby on rails并大致遵循以下指南: 我有一个关于成就结果的循环(指南示例中的注释): 已完成的结果() 身份证件: 成功: 用户: 这是一个成就的show视图,当我加载该视图时,我看到循环的额外迭代,结果字段为空值。即使阵列为[](使用rails控制台检查以确保阵列为空),也会发生这种情况 成就模式: class Achievement < ActiveRecord::Base has_many :achievement_results, :de
已完成的结果()
身份证件:
成功:
用户:
这是一个成就的show视图,当我加载该视图时,我看到循环的额外迭代,结果字段为空值。即使阵列为[](使用rails控制台检查以确保阵列为空),也会发生这种情况
成就模式:
class Achievement < ActiveRecord::Base
has_many :achievement_results, :dependent => :destroy
end
班级成绩:破坏
结束
您是否在某个地方(可能是控制器,或某个地方的表单)调用了@acquisition.acquisition\u results.build
。这将解释为什么count
返回一个不同的数字(因为count
不像size
那样被缓存)以及为什么值为空
如果你有那一行,把它改成
AchievementResults.new(:Achievent=>@Achievent)
可能会帮你解决问题;检查数据库。向我们展示@Acquisition的模型。在这个视图中,@acgression.acgression\u results.count
返回什么,1还是0?@DaveNewton在rails控制台上给了我“←[1m←[35机械结果载荷(1.0ms)←[0m从“成就结果”中选择“成就结果”。*其中“成就结果”。“成就id”=2=>[]”。不知道检查数据库的另一种方法。@MichałKwiatkowski将模型添加到问题中,在视图中计数显示为0。我的意思是直接检查数据库;每个
都不会迭代不存在的内容,也不会得到空值,你会得到结果
的NilValue,因此列表中有一些内容。
class Achievement < ActiveRecord::Base
has_many :achievement_results, :dependent => :destroy
end