表格中具有collection_check_boxes的Ruby on Rails表单-has_and_belongs_to_many关联

时间:2019-07-07 23:03:05

标签: ruby-on-rails bootstrap-4 erb ruby-on-rails-5.2 ruby-2.4

我的播放器和注册模型之间具有has_and_belongs_to_many关联(注册用于事件)。创建注册列表后,我将显示所有玩家的列表,并显示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 %> 

我尝试在Player模型中创建一个方法以在标签内显示更多属性,但这并不理想。

型号

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

我的问题是,如何在具有多个列引用Player属性的表中显示此check_box收集列表?

0 个答案:

没有答案