在我的控制器的show方法中,我无法为每个'主题'创建实例变量。在我的数据库中。 " @ pie_correct"变量有效,但问题出在" .each"循环 - 我收到错误"语法错误,意外' =',期待关键字_end"我应该怎么改变这个?
@pie_correct = TestQuestions.where(:correct => true).joins(:test).merge(Test.where(user_id: current_user))
Subject.all.each do |s|
"@subject_ + #{s.id} + _correct" = @pie_correct.joins(:question).merge((Question.all).joins(:subject).merge(Subject.where(id: s.id)))
end
感谢。
答案 0 :(得分:3)
您正在寻找instance_variable_set
方法:
Subject.all.each do |s|
instance_variable_set "@subject_#{s.id}_correct", @pie_correct.joins(:question).merge((Question.all).joins(:subject).merge(Subject.where(id: s.id)))
end
我也相信你不需要内插字符串中的加号。
答案 1 :(得分:2)
<强>系统强>
道具Chris Peters
以获得答案(这是正确的)
-
我想在这里提出一个关于你的系统的观点。为什么要设置多个instance variables
?
由于任何其他原因造成的损失,我建议这违反了DRY programming principles的Rails以及单Source Of Truth的想法 - 这意味着您需要设置一次数据,并按你的意愿使用它。
我个人会设置一个单独的实例变量,然后通过它来拉取关联数据。