2012-01-02 7 views
3

私は約1時間これを理解しようとしています。 I実際にメンバーのモデルオブジェクトが移入された部分的なコレクションを持っている、と私は、コレクションを使用して、それをレンダリングしようとすると:Railsの部分コレクションは空ですか?

<%= render :partial => 'list', :collection => @members %> 

私_list.html.erbで@member_idと@member_email属性は、レンダリングに空ですhtml:

<%= check_box_tag('selected_member[]', @member_id, false) %> 
<%= @member_email %> 

ビューが正しくレンダリングされ、3つのメンバーアイテムが表示されますが、idとemailは空白です。

私は間違っていますか? "member_id"または "member.id"を使用して部分的なメンバーにアクセスしようとすると、 "定義されていないローカル変数またはメンバ` member '"が得られます。

今私はさまざまな例を見てきましたが、コレクション方法は私が必要とする方法です。親ビューにはメンバーをグループ分けする方法がサポートされているため、各メンバーだけを扱うためには部分的なものが必要です。私が各メンバーのために部分的にループを実装する場合、私は親ビューの入力フィールドと対話するグループ化ビューコードもそれに移さなければなりません。例えばそれは維持するための混乱になります。

ありがとうございます。あなたが行うと

答えて

4

<%= render :partial => 'list', :collection => @members %> 

Railsは、この場合listには、部分的なファイル自体と同じ名前を付ける部分的なファイル内のローカル変数を期待しています。

ので、代わりのmember、デフォルトでは、このようなlist次のようになります。

<%= check_box_tag('selected_member[]', list.id, false) %> 
<%= list.email %> 

あなたの代わりにmember命名されるローカル変数をしたい場合は、部分的なファイルの名前を変更するか、この構文を使用する必要があり、次のいずれか

ここ
<%= render :partial => 'list', :collection => @members, :as => :member %> 

詳細情報(秒3.4.5。):http://guides.rubyonrails.org/layouts_and_rendering.html

+0

いやはや、ありがとう!私はちょうど私がそのガイドを読んだ後であっても、まだ完全にRailsを取得していないと思います。私が今あなたが指摘したことを意味します。再度、感謝します! – garlicman

関連する問題