我目前正在开发一款购物车,它将获取CD或DVD的ID,然后获取该项目的名称。
如果我单独使用它,它可以正常工作,因为我已在其他文件中进行了相关更改。
目前的代码是:
<% if line_item==@current_item %>
<tr id='current_item'>
<% else %>
<tr>
<% end %>
<td><%= line_item.quantity %>×</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=>'£') %></td>
</tr>
如果我有一个<td><%= line_item.cd.name %></td>
行并且只添加CD,那么它可以正常工作,反之亦然<td><%= line_item.dvd.name %></td>
。
我想要的是进行测试以查看cd.name
是nil
是否使用dvd.name
,但这不起作用。
答案 0 :(得分:4)
这应该有效
line_item.cd.try(:name) || line_item.dvd.try(:name)
如果cd
或cd.name
为零,此代码将首先尝试获取CD名称并回退到DVD。
答案 1 :(得分:-1)
在Item
模型中,尝试添加此方法:
def cd_or_dvd
line_item.dvd || line_item.cd
end
比在视图中:
<td><%= line_item.dvd.name %></td>