如何在rails 3.1.0中使用嵌套资源列出索引中的ALL?

时间:2012-01-31 16:43:43

标签: ruby-on-rails ruby-on-rails-3.1

我们的rails 3.1.0 app中有rfqs和引用控制器。 Rfq有很多报价,引用belongs_to rfq。在routes.rb中,它是:

resources :rfq do
  resources :quotes
end

但是我们想列出索引中的所有引号。但预定义路线仅允许显示特定rfq的所有报价,如rake路线所示:

 rfq_quotes GET    /rfqs/:rfq_id/quotes(.:format)                                   {:action=>"index", :controller=>"quotes"}

添加路线的简单而干净的方法是什么,以便我们可以在索引中列出所有报价,并为列出的每个报价显示和编辑?非常感谢。

2 个答案:

答案 0 :(得分:5)

您必须将路线更改为:

resources :quotes, only: [:index]
resources :rfq do
  resources :quotes
end

并处理在这种情况下你不会有:rfq_id的事实。您可以使用之前的过滤器:

before_filter :load_rfq

def load_rfq
  @rfq = Rfq.find(params[:rfq_id]) if params[:rfq_id].present?
end

然后

def index
  @quotes = @rfq.present? ? @rfq.quotes : Quote.all
end

答案 1 :(得分:1)

这只是一个建议,甚至不确定它是否有效。 也许如果你在rfq中创建另一个索引并设置@rfqs = @ Rfqs.find(:all)然后在视图中你可以循环遍历rfqs中的每个rfq以及与每个rfq相关的每个引号。 (@rfqs.each.quotes.find(:all).each do |quote|

我不确定这是否合理。