我们的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"}
添加路线的简单而干净的方法是什么,以便我们可以在索引中列出所有报价,并为列出的每个报价显示和编辑?非常感谢。
答案 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|
)
我不确定这是否合理。