Rails 3 формирует только возврат последнего элемента

#ruby-on-rails-3 #forms #checkbox

#ruby-on-rails-3 #формы #флажок

Вопрос:

Я пытаюсь создать форму, в которой будут перечислены все пользователи и которая позволит вам проверять тех, кого вы хотите добавить в команду. Вот мой первый разрез формы:

 <div id="add_team_mates">
  <%= form_tag do %>
  <%= will_paginate @users %>
  <ul class="users">
    <% @users.each do |user| %>
    <li>
      <%= gravatar_for user, :size => 30 %>
      <%= link_to user.name, user %>
      <%= check_box_tag("add", user.id) %>
    </li>
    <% end %>
  </ul>
  <%= submit_tag "Add Team Mates", :action => "add_team_mates" %>
  <% end %>
</div>
  

И прямо сейчас это все, что у меня есть в контроллере:

 def add_team_mates

end
  

Проблема в том, что если я проверяю нескольких пользователей, я получаю только последний user.id как я и ожидал, вместо multiple. Вот некоторый пример из журнала:

 Started POST "/teams/5" for 127.0.0.1 at 2011-04-14 15:28:13 -0700
  Processing by TeamsController#add_team_mates as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"IHFDevfKES8NibbCMlRa1t9qHn4/ZMKalK1Kjczh2gM=", "add"=>"3", "commit"=>"Add Team Mates", "id"=>"5"}
Completed   in 12ms
  

Любая помощь по этому вопросу была бы с благодарностью принята. Спасибо!

Ответ №1:

Все ваши флажки имеют одинаковое имя, измените строку на check_box_tag("add[]",user.id)

В контроллере ваши параметры будут такими:

params[:add] = ['foo','bar','baz']

Комментарии:

1. Идеальный. Это сделало свое дело. Теперь мне просто нужно выяснить логику для контроллера 🙂