Rails 3.无法在数组中循环
问题描述:
我正在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
我真能这样做吗?为什么控制器每个都不在数组中循环?
答
您正在调用您的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
把那一个镜头,让我们知道它是如何工作的。
答
试试这个
params[:profileids].split(",").each do |id|
基本上,你试图通过一个字符串,而不是一个数组进行迭代。
工程就像一个魅力!谢谢! – 2010-11-28 09:58:33