在Rails 3.0.9中访问嵌套资源中的父作用域

时间:2012-06-05 11:03:46

标签: ruby-on-rails-3

我有一个名为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的控制器中创建实例变量没有意义。我认为必须在视图中循环完成。

有什么建议吗?

0 个答案:

没有答案