如果产品名称为nil,那么使用其他名称?

时间:2012-12-16 19:42:36

标签: ruby-on-rails ruby

我目前正在开发一款购物车,它将获取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,但这不起作用。

2 个答案:

答案 0 :(得分:4)

这应该有效

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

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

答案 1 :(得分:-1)

Item模型中,尝试添加此方法:

def cd_or_dvd
  line_item.dvd || line_item.cd
end

比在视图中:

<td><%= line_item.dvd.name %></td>