2010-11-26 61 views
0

我正在Rails 3中開發一個小應用程序。 在一個頁面上,我爲數組中的每個用戶(在每個循環中)收集ID。然後我將該數組的內容放入隱藏文本字段中,並將其發送到名爲「add_all」的方法。在這個方法中,我得到了一個循環,它應該選擇每個用戶ID並逐個添加到數據庫中,但它只會添加第一個。Rails 3.無法在數組中循環

在視圖(有點simplyfied):

<% profileids = Array.new %> 
<% @notfriends.each do |contact| %> 
<% profileids << contact.id %> 
<% end %> 

<%= hidden_field_tag :profileids, profileids.join(",") %> 

在控制器:

params[:profileids].each do |id| 

@profile = Profile.find(params[:profile_id]) 

@contact = Contact.create(:profile_id => params[:profile_id], :friend_id => id) 

@profile.contacts << @contact 

end 

我真能這樣做嗎?爲什麼控制器每個都不在數組中循環?

回答

2

您正在調用您的profileids數組上的「加入」。這使它成爲一個字符串,因此你不能用「each」來遍歷它。

你應該在你的控制器做的是這樣的:

id_array = params[:profileids].split(",") 
id_array.each do |id| 
    @profile = Profile.find(params[:profile_id]) 
    @contact = Contact.create(:profile_id => params[:profile_id], :friend_id => id) 
    @profile.contacts << @contact 
end 

把那一個鏡頭,讓我們知道它是如何工作的。

+0

工程就像一個魅力!謝謝! – 2010-11-28 09:58:33

0

試試這個

params[:profileids].split(",").each do |id| 

基本上,你試圖通過一個字符串,而不是一個數組進行迭代。