2012-01-31 9 views
3

私たちのレール3.1.0アプリにはrfqと引用符のコントローラがあります。 Rfqは多くの引用符を持ち、belongs_to rfqを引用します。 routes.rbでは、レール3.1.0のネストされたリソースでも、インデックスにALLをリストする方法はありますか?

resources :rfq do 
    resources :quotes 
end 

インデックス内のすべての引用符をリストしたいとします。しかし、事前に定義されたルートが唯一のすくいルートに表示されているように、特定のRFQのためのすべての引用符を表示することができます:

私たちはインデックスのすべての引用符を一覧表示することができますので、ショーで、ルートを追加するためのシンプルでクリーンな方法は何
rfq_quotes GET /rfqs/:rfq_id/quotes(.:format)         {:action=>"index", :controller=>"quotes"} 

と見積もりごとに編集しますか?本当にありがとう。

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

そして、あなたが持っていないという事実ハンドル:そのような状況でrfq_idを

答えて

5

あなたはへのルートを変更する必要があります。あなたは、フィルタの前に使用することができます。

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 
+0

非常にきれいに見えます。索引では、各ショーと編集(ネストされたリソース)ごとにrfq_idを見つける必要があります。フィルタ前の目的は何ですか?ありがとう。 – user938363

+0

私は答えを更新しました;) – lucapette

+0

解決策はきれいです。本当にありがとう。 – user938363

1

これは単なる提案ではなく、それが動作する場合でも、確実です。 もしあなたがrfqの中に別のインデックスを作成して@rfqs = @ Rfqs.find(:all)を設定し、ビュー内でrfqの各rfqと各rfqに関連する各引用符をループすることができます。 (@rfqs.each.quotes.find(:all).each do |quote|

私はそれが理にかなっているかどうかは分かりません。