0

私は現在、CD または DVD の ID を取得するカートを開発しています。その後、アイテムの名前を取得します。

それらを個別に使用すると、他のファイルに関連する変更を加えているため、正常に機能します。

現在のコードは次のとおりです。

<% if line_item==@current_item %>
  <tr id='current_item'>
<% else %>  
  <tr>
<% end %>
    <td><%= line_item.quantity %>&times;</td>
    <td><%= line_item.product.name %></td>
    <td><%= line_item.dvd.name %></td>

    <td class="item_price"><%= number_to_currency(line_item.total_price, :unit=>'&pound') %></td>
  </tr>

回線があり、CD のみを追加すると正常に<td><%= line_item.cd.name %></td>動作し、この回線ではその逆<td><%= line_item.dvd.name %></td>です。

私が望むのは、テストを行って を使用するかどうかcd.nameを確認することですが、これは機能していません。nildvd.name

4

2 に答える 2

4

これはうまくいくはずです

 line_item.cd.try(:name) || line_item.dvd.try(:name)

cdこのコードは、最初に CD 名を取得し、またはcd.nameが nilの場合は DVD にフォールバックしようとします。

于 2012-12-16T19:44:39.623 に答える
-1

Itemモデルで、次のメソッドを追加してみてください。

def cd_or_dvd
  line_item.dvd || line_item.cd
end

ビューより:

<td><%= line_item.dvd.name %></td>
于 2012-12-16T19:46:19.917 に答える