2010-11-26 32 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| 

基本上,你试图通过一个字符串,而不是一个数组进行迭代。