我有一个名为Test的嵌套资源的机器模型。直线加速器有很多测试。 Test模型有一个名为“Baseline”的布尔属性。我还有一个名为Baselines的嵌套资源,它没有模型。它旨在聚合“Baseline”设置为“True”的该机器的所有最新测试。
在我的机器模型中,我有一个名为energy_x的范围
class Machine < ActiveRecord::Base
scope :energy_x, lambda { |x| where(:energy => x) }
在我的Baseline控制器中,我可以成功访问此命名范围:
@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的控制器中创建实例变量没有意义。我认为必须在视图中循环完成。
有什么建议吗?