拥有并属于许多 - 在 table 视图中显示所有记录

Has and belongs to many - display all records in table view

我有一个名为 Patient 和 table patients

的模型

这个模型 Patient 代表医生办公室里的一个病人。

我有一个填充了不同性别名称的性别模型

患者has_and_belongs_to_many:性别和性别has_and_belongs_to_many:患者。

我对种族、问题、保险有类似的实施。

在患者索引视图中,我试图显示给定患者的种族或种族、关注或关注、保险或保险(他们可能有 none、1 或很多)。我怎样才能一次显示所有这些?我想出的唯一方法是调用 first.name ,如下所示。谢谢!

<table>
  <tr>
      <th>Patient ID</th>
      <th>Created</th>
      <th>Created By</th>
      <th>Staff Clinician</th>
      <th>Concerns</th>
      <th>Gender</th>
      <th>Race</th>
      <th>Insurance</th>
      <th>Referral Request</th>
  </tr>

<% @patients.each do |patient| %>
  <tr>
    <td><%= patient.id %></td>
    <td><%= patient.created_at.strftime("%Y-%m-%d") %></td>
    <td><%= patient.user_id %></td>
    <td><%= patient.staff_clinician_id %></td>
    <td><%= patient.concerns.first.name %></td>
    <td><%= patient.genders.first.name %></td>
    <td><%= patient.races.first.name %></td>
    <td><%= patient.insurances.first.name %></td>
    <td><%= link_to "Show", patient %></td>
    <td><%= link_to "Edit", edit_patient_path(patient) %></td>
    <td><%= link_to "Remove", patient, method: :delete, data: { confirm: "Are you sure?" } %></td>
  </tr>
<% end %>
</table>

您可以遍历每个模型实例,例如:

<% patient.concerns.each do |concern| %>
    <td><%= concern.name %></td>
<% end %>

您可以对集合使用 to_sentence

<td><%= patient.concerns.map(&:name).to_sentence %></td>

<td><%= patient.concerns.map{ |concern| concern.name&.titleize }.to_sentence %></td>

& 是为了安全导航,这意味着如果关注点没有名称,那么下面的 .titleize 就不会爆炸。

无论如何,这种显示集合的方法在处理表格时非常有用,因为只需要一个单元格即可显示所有内容。