1

我有一个带有嵌套资源的机器模型,称为测试。直线加速器 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 的实例变量是没有意义的。我认为它必须在视图中循环完成。

有什么建议么?

4

0 回答 0