2011-12-07 12 views
0

私のユーザーモデルには多くのプロジェクトがあり、各プロジェクトには多くの請求書があります。Ruby on Rails - コレクション内のコレクションをレンダリングしますか?

私は次のように

render :partial => "layouts/allInvoices", :collection => @projects, :as => :p 

そしてallInvoices内部をレンダリング呼び出しています、私は、各プロジェクトの請求書を反復したいです。

私は

- p.invoices.each do |i| 

を使用することができます。しかし、私はむしろ、コレクションを使用すると思います。私はそれをどのようにフレーズするかわからない

= render :partial => "layouts/invoiceItem", :collection => p.invoices, :as => :i 

動作しません。コントローラ内にネストされた反復を設定する必要はありますか?

おかげ

答えて

0

あなたは何かなどを意味するか...その後

= render "layouts/allInvoices", :p => @projects 

- # layouts/allInvoices 
- p.invoices.each do |invoice| 
    = render "layouts/invoiceItem", :i => invoice 

- # layouts/invoiceItem 
= i.id # this gives id of Invoice 
+0

私は '私は' これをするためにnilを取得します。私の試行されたコレクションと同じ結果です。部分的にレンダリングすることなく 'i'に直接アクセスすると、機能します。 – aperture

+0

'layouts/allInvoices'の' invoice'とは何ですか – axsuul

+0

何を求めていますか?コンストラクトで 'p.invoices.each do | invoice |' "invoice"はp.invoicesの各反復のプレースホルダー要素で、pはProject.allの各反復のプレースホルダーで、p.invoicesは各プロジェクトのInvoice.allです。例えばProject.first.Invoice.firstは "請求書"の最初のインスタンスです...しかし、それは本当に私の質問とは関係ありません。私は、インスタンス変数をコレクションに渡す方法が不思議です。コレクション自体がコレクションから呼び出されたときです。 – aperture

関連する問題