已经和属于很多 - 显示表格视图中的所有记录
问题描述:
我有一个模型叫病人和病人已经和属于很多 - 显示表格视图中的所有记录
这个模型病人代表病人在医生的办公室。
我有性别填充了不同性别的名字
患者has_and_belongs_to_many模型:性别和性别has_and_belongs_to_many:患者。
我有一个类似的实施竞赛,关注,保险。
在患者指数视图中,我试图显示给定的患者比赛或种族,关注或担忧,保险或保险(他们可能没有,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>
答
您可以使用to_sentence
在集合。
<td><%= patient.concerns.map(&:name).to_sentence %></td>
或
<td><%= patient.concerns.map{ |concern| concern.name&.titleize }.to_sentence %></td>
的&
是安全航行,如果担心没有一个名字,那么以下.titleize
不会炸毁的意思。
无论如何,这种显示集合的方法在处理表格时很好,因为只需要一个单元来显示所有内容。
答
你可以循环每个模型实例,例如:
<% patient.concerns.each do |concern| %>
<td><%= concern.name %></td>
<% end %>
感谢abax - 有没有'。'在第二个例子中不合适?当我尝试将其插入到代码中时出现语法错误。 – mike9182
没有'&'只使用'name.titleize'就可以工作吗? Ruby 2.3.0中添加了安全导航操作符。可能取决于你的Ruby版本。我只能猜测不知道具体的错误。也许你可以发表评论。 – abax