2017-09-26 60 views
0

我有一個模型叫病人和病人已經和屬於很多 - 顯示錶格視圖中的所有記錄

這個模型病人代表病人在醫生的辦公室。

我有性別填充了不同性別的名字

患者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> 

回答

1

您可以使用to_sentence在集合。

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

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

&是安全航行,如果擔心沒有一個名字,那麼以下.titleize不會炸燬的意思。

無論如何,這種顯示集合的方法在處理表格時很好,因爲只需要一個單元來顯示所有內容。

+0

感謝abax - 有沒有'。'在第二個例子中不合適?當我嘗試將其插入到代碼中時出現語法錯誤。 – mike9182

+0

沒有'&'只使用'name.titleize'就可以工作嗎? Ruby 2.3.0中添加了安全導航操作符。可能取決於你的Ruby版本。我只能猜測不知道具體的錯誤。也許你可以發表評論。 – abax

1

你可以循環每個模型實例,例如:

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