Ruby on rails 3 在Rails 3.0.9的嵌套资源中访问父范围
我有一个机器模型,其中包含一个名为Test的嵌套资源。直线加速器有很多测试。测试模型有一个称为基线的布尔属性。我还有一个名为Baselines的嵌套资源,它没有模型。它意味着为基线设置为True的机器聚合所有最新的测试 在我的机器模型中,我有一个称为energy_x的范围Ruby on rails 3 在Rails 3.0.9的嵌套资源中访问父范围,ruby-on-rails-3,Ruby On Rails 3,我有一个机器模型,其中包含一个名为Test的嵌套资源。直线加速器有很多测试。测试模型有一个称为基线的布尔属性。我还有一个名为Baselines的嵌套资源,它没有模型。它意味着为基线设置为True的机器聚合所有最新的测试 在我的机器模型中,我有一个称为energy_x的范围 class Machine < ActiveRecord::Base scope :energy_x, lambda { |x| where(: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\u测试进行排序的方法。此参数的值有无限的选项,因此在控制器中创建名为@baseline_tests_1和@baseline_tests_2的实例变量没有意义。我认为它必须在视图中循环完成
有什么建议吗