0

尊敬的人...

在我的应用程序中,我想显示给定员工的最后一个医院名称......

我为此尝试了这个:

<%= @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 的未定义方法‘资格’”错误......我尝试了很多......但仍然......

感谢和诚挚的问候

-天空

4

3 回答 3

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 %>
于 2013-03-07T09:11:20.813 回答
1

试试这个

<%= @employee.postings.last.try(:hospital).try(:hospital_name) || "N/A" %>
于 2013-03-07T09:12:13.313 回答
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 %>
于 2013-03-07T09:15:49.827 回答