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>

如果我有一条<td><%= line_item.cd.name %></td>线并且只添加 CD,它可以正常工作,反之亦然<td><%= line_item.dvd.name %></td>

我想要的是做一个测试,看看是否cd.namenil,如果它是使用dvd.name,但这不起作用。

4

2 回答 2

4

这应该工作

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

此代码将首先尝试获取 CD 名称并回退到 DVD,如果其中之一cdcd.name为 nil。

于 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 回答