尊敬的人......
在我的应用程序中,我想显示给定员工的最后一个医院名称......
我试过这个:
<%= @employee.postings.last.hospital.hospital_name %>
所有必需的关联都是正确的...因为这适用于所有有帖子的员工......但是我发现错误的员工甚至没有一个帖子......
我试过
<%= @employee.postings.last.hospital.hospital_name.to_s %>
甚至
<% if !@employee.postings.last.hospital.nil? %>
甚至是“尝试”功能......
我只是希望它在没有显示任何数据时...而不是令人生畏的错误......
如果我可以学习如何跳过打印nil值那么它会很棒......我在其他地方也面临类似的问题......
对于前: 在我的员工主页面中,我想显示我正在做的每个员工的所有资格:
<tbody>
<% @employees.each do |employee| %>
<tr>
<td><%= employee.emp_id %></td>
<td><%= employee.emp_treasury_id %></td>
<td><%= link_to employee.emp_full_name,employee_path(employee) %></td>
<% @employee.qualifications.each do |qualification| %>
<td><%= qualification.qualification_name.Qualification_name %></td>
<% end %>
</tr>
<% end %>
但我最终再次得到“未定义的方法`资格'为nil:NilClass”错误... 我试了很多......但还是......
Thanx和Sincere Regards
-Sky
答案 0 :(得分:1)
使用try
<%= @employee.postings.last.try(:hospital).try(:hospital_name) %>
使用if
<%= @employee.postings.last.hospital.hospital_name if @employee.postings.exists? && @employee.positings.last.hospital %>
答案 1 :(得分:1)
试试这个
<%= @employee.postings.last.try(:hospital).try(:hospital_name) || "N/A" %>
答案 2 :(得分:1)
应该是
员工不是@employee
请您使用try或respond_to以确保更安全。因为您可能没有运行迁移。
.respond_to?(:field) && model.try(:field)
由于
<% @employees.each do |employee| %>
<tr>
<td><%= employee.emp_id %></td>
<td><%= employee.emp_treasury_id %></td>
<td><%= link_to employee.emp_full_name,employee_path(employee) %></td>
<% employee.qualifications.each do |qualification| %>
<td><%= qualification.try(:qualification_name).try(:Qualification_name) %></td>
<% end %>
</tr>
<% end %>