2012-01-02 82 views
3

我一直在試圖找出這一個現在約一個小時。我有一個確實填充有成員的模型對象的部分集合,當我嘗試使用集合,以使其: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和電子郵件空白。

我在做什麼錯?如果我嘗試使用「member_id」或「member.id」來訪問部分成員,那麼我會得到「未定義的局部變量或方法」成員'「,所以很明顯這不是正確的表示法。

現在我已經看到了一堆不同的例子,但收集方法是我需要去的方式。我需要partial來處理每個成員,因爲父視圖支持以不同方式對成員進行分組。如果我在每個成員的partial中實現一個循環,那麼我也必須將分組視圖代碼也移入它,這與父視圖中的輸入字段進行交互。例如這將是一個混亂的維護。

在此先感謝。

回答

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 2012-01-04 04:27:11