0

尊敬されるppl..。

私のアプリケーションでは、特定の従業員の最後の病院名を表示したいと思います...

私はこれを試しました:

<%= @employee.postings.last.hospital.hospital_name %>

必要な関連付けはすべて正しいです...これは投稿があるすべての従業員に対して完全に機能するため...しかし、投稿が1つもない従業員に対してはエラーが発生します...

やってみた

<%= @employee.postings.last.hospital.hospital_name.to_s %>

そしてさえ

<% if !@employee.postings.last.hospital.nil? %>

そして「try」機能でさえ…。

恐ろしいエラーの代わりに、データが存在しない場合はデータを表示しないようにしたいだけです...

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の未定義のメソッド`qualifications'」エラーを受け取ることになります...私はたくさん試しています...しかしそれでも...

よろしくお願いします

-空

4

3 に答える 3

1

これを試して

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

安全性を高めるために、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 に答える