我有一个带有嵌套资源的机器模型,称为测试。直线加速器 has_many 测试。测试模型有一个名为“基线”的布尔属性。我还有一个名为 Baselines 的嵌套资源,它没有模型。它旨在汇总“基线”设置为“真”的那台机器的所有最新测试。
在我的机器模型中,我有一个名为 energy_x 的范围
class Machine < ActiveRecord::Base
scope :energy_x, lambda { |x| where(:energy => x) }
在我的基线控制器中,我可以成功访问这个命名范围:
@energies.each do |energy|
@baseline_tests << machine.baseline_tests.energy_x(energy)
end
但是如果我尝试在视图中访问这个范围,
<%= render :partial => "baseline_test", :collection => @baseline_tests.energy_x(energy) %>
我得到一个未定义的方法错误:
undefined method `energy_x' for #<Array:0x007f9da7686950>
我听说无论如何我都不应该在视图中使用范围,但我需要一种方法来根据参数对集合 @baseline_tests 进行排序。这个参数的值有无限的选项,所以在控制器中创建一个名为@baseline_tests_1 和@baseline_tests_2 的实例变量是没有意义的。我认为它必须在视图中循环完成。
有什么建议么?