Форма Ruby on Rails с collection_check_boxes в таблице - ассоциация has_and_belongs_to_many - PullRequest
0 голосов
/ 08 июля 2019

У меня есть связь has_and_belongs_to_many между моими моделями Player и Registration (регистрация для события).Когда создается список регистрации, я показываю список всех игроков и collection_check_boxes, чтобы выбрать одного или нескольких игроков для этого списка регистрации.

В идеале я хотел бы показать этот список в виде таблицы.Флажок первого столбца, второй столбец Player.name, третий столбец Player.club и т. Д.

Проблема в том, что я не могу найти способ получить доступ к каждому атрибуту для Player в каждом из них, чтобы я моготформатировать таблицу.Вместо этого я могу сгенерировать только одну метку.

<%= f.collection_check_boxes :player_ids, @players, :id, :first_name do |b| %>
  <%= b.check_box %>
  <%= b.label %>
<% end %> 

Я пытался создать метод в модели проигрывателя для отображения большего количества атрибутов внутри метки, но он не идеален.

Модель

def player
  "#{first_name} #{last_name} #{club} ..."
end
<%= f.collection_check_boxes :player_ids, @players, :id, :player do |b| %>

Вот мой код:

Модель игрока

class Player < ApplicationRecord
  has_and_belongs_to_many :registrations, dependent: :destroy

  def player
    "#{first_name} #{last_name} #{club}"
  end
end

Регистрационная модель

class Registration < ApplicationRecord
  belongs_to :fixture
  has_and_belongs_to_many :players
end

Форма

<%= simple_form_for(@registration) do |f| %>

<div class="form-inputs">
<%= f.association :fixture %>

<table class="table col-md-4">
  <thead>
    <tr>
      <td>
        <!-- check box -->
      </td>
      <th>
        Name (Primary Venue)
      </th>
    </tr>
  </thead>
  <tbody>
   <%= f.collection_check_boxes :player_ids, @players, :id, :player do |b| %>
     <tr>
       <td>
        <div class="collection-check-box">
          <%= b.check_box %>
        </div>
      </td>
      <td>
        <div class="collection-check-box">
          <%= b.label %>
        </div>
      </td>
    </tr>
   <% end %>
  </tbody>
 </table>
</div>
<div class="form-actions">
  <%= f.button :submit %>
</div>
<% end %>

МойВопрос в том, как я могу отобразить этот список коллекции check_box в таблице с несколькими столбцами, ссылающимися на атрибуты Player?

...