Rails 3.无法循环遍历数组

时间:2010-11-26 23:44:24

标签: arrays ruby-on-rails-3

我正在开发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

我真的这样做了吗?为什么控制器都没有循环通过阵列?

2 个答案:

答案 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|

基本上,你试图遍历字符串而不是数组。