我正在开发Rails 3中的一个小应用程序。 在一个页面上,我收集了数组中每个用户(在每个循环中)的ID。然后我将该数组的内容放在隐藏的文本字段中,并将其发送到名为“add_all”的方法。在这个方法中,我得到了一个循环,它应该选择每个用户id并逐个添加到数据库中,但它只添加第一个。
在视图中(有点简单):
<% 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
我真的这样做了吗?为什么控制器都没有循环通过阵列?
答案 0 :(得分:2)
您在profileids数组上调用“join”。这使它成为一个字符串,因此你不能使用“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
试一试,让我们知道它是如何运作的。
答案 1 :(得分:0)
试试这个
params[:profileids].split(",").each do |id|
基本上,你试图遍历字符串而不是数组。