Rails 3. Не удается перебрать массив - PullRequest
0 голосов
/ 27 ноября 2010

Я занимаюсь разработкой небольшого приложения в Rails 3. На одной странице я собираю идентификаторы для каждого пользователя (в каждом цикле) в массиве. Затем я помещаю содержимое этого массива в скрытое текстовое поле и отправляю его в метод с именем «add_all». В этом методе я получил цикл, который должен выбирать идентификатор каждого пользователя и добавлять его в базу данных один за другим, но добавляет только первый.

В представлении (немного упрощенно):

<% 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 ]

2 голосов
/ 27 ноября 2010

Вы вызываете "join" в вашем массиве profileids.Это делает его строкой, и поэтому вы не можете перебирать его, используя «каждый».

То, что вы должны сделать в вашем контроллере, это:

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 голосов
/ 27 ноября 2010

попробуйте

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

Обычно вы пытаетесь перебрать строку, а не массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...