0

レコードを選択すると、ページの上半分に複数のレコードが設定され、ページの下半分に単一のレコードの詳細が設定された複雑な Web アプリケーションがあり、下部の詳細部分の一部として、更新するパーシャルがあります。モデル関係からのマルチレコードテーブルであるAJAXを使用していますが、私が抱えている問題は、レコードセットをループして、そのレコードの関係からデータを取得しようとすると、レコードが戻ってくることnilです。これが私の言いたいことの例です。

<table>
<% @file.file_entities.each do |i| %>
  <tr>
    <td id="name"><div><a href="#"><%= truncate("#{i.entity.FirstName} #{i.entity.LastName}", :length => 17) %></a></div></td>
    <td id="position"><select><option>Buyer</option><option>Seller</option><option>Lender</option><option>Referrer</option></select></td>
    <td id="pr"><%= check_box_tag('pr_out', i.PRSent, i.PRSent?) %></td>
    <% if EntityContact.where(:EntityID => i.entity.EntityID).phones_callable.first.inspect == nil -%>
      <td id="phone"><div>NONE</div></td>
    <% else %>
      <td id="phone"><div><%= EntityContact.where(:EntityID => i.EntityID).phones_callable.first.ContactDesc %>: <%= EntityContact.where(:EntityID => i.EntityID).phones_ca>
    <% end %>
  </tr>
<% end %>
</table>

これを使用して値を取得する場所ContactDesc

EntityContact.where(:EntityID => i.EntityID).phones_callable.first.ContactDesc

それは私にnilEntityContactモデルオブジェクトを与えていますがi.EntityID、このループにちょうど入れた場合、それは私に与えられ、また、上記のwhere句でactualEntityIDに置き換えると、そのレコードがうまく返されます。where句で機能していないと思いますが、理由はわかりませんか?i.EntityIDIDi.EntityID

4

1 に答える 1

0

私はそれを理解しました、愚かなことに、その関係にレコードがない場合、例外がスローされることに気づかなかったので、データを取得する前に最初にレコードが存在するかどうかをチェックする if ステートメントを追加しました。

于 2012-07-18T22:18:47.407 に答える