【问题标题】:Rails undefined method `hospital' for nil:NilClass用于 nil:NilClass 的 Rails 未定义方法“医院”
【发布时间】:2013-02-22 09:42:59
【问题描述】:

尊敬的人...

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

我试过这个:

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

感谢和诚挚的问候

-天空

【问题讨论】:

    标签: ruby-on-rails validation model-view-controller exception


    【解决方案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 %>
    

    【讨论】:

      【解决方案2】:

      试试这个

      <%= @employee.postings.last.try(:hospital).try(:hospital_name) || "N/A" %>
      

      【讨论】:

        【解决方案3】:

        使用try

        <%= @employee.postings.last.try(:hospital).try(:hospital_name) %>
        

        使用if

        <%= @employee.postings.last.hospital.hospital_name if @employee.postings.exists? && @employee.positings.last.hospital %>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-10
          相关资源
          最近更新 更多