2011-11-03 64 views
0

讓以下代碼引發錯誤。我以前一直只是陪審員,但想要學習正確的方法。傳遞局部變量的正確方法是什麼?假設你也有一個你想在局部使用的實例變量?Rails 3,正確的方式來執行partials?

@users is an array of user emails 
<% @users.each do |email| %> 
    <%= render :partial => 'user/foobar' %> 
<% end %> 

user/foobar 
<div id="user_<%= email %>> 
    <div><%= email %></div> 
</div> 

編輯:也將要添加一個電子郵件地址後使用部分在一個js文件。我將創建後的實例設置爲@user還是其他?

回答

2

使用each你不需要。您可以使用:collection選項:

<%= render :partial => "user/foobar", :collection => @users %> 

user/_foobar.html.erb部分(下面,自動創建的局部變量foobar將包含來自@users集合中的項的當前實例):

<div id="user_<%= foobar %>> 
    <div><%= user %></div> 
</div> 

地方變量以部分名稱命名。請參閱guide here

+0

快速的問題,如果我然後有一個js文件,想要使用行動後的部分(說添加用戶)我會設置一個實例變量@user或別的東西? – John

+0

代碼中存在錯誤,我修復了它。還添加了一個鏈接到Rails指南。 – Zabba

+0

理想情況下,您可以將局部變量傳遞給partial,並且不會像部分內部的@ @ user一樣訪問實例變量。這樣你的部分就不會太依賴於局部以外的代碼。 – Zabba

0

試試這個:

render :partial => 'user/foobar', :locals => {:email => email } 

此經過,在局部變量「電子郵件」爲標誌:電子郵件