Ruby Ternary如果Bug

时间:2013-10-03 08:11:01

标签: ruby-on-rails ruby ruby-on-rails-2

我要做的是打印Pending Quotes如果计数为0>1,则为Pending Quote,如果计数为==1,则为count {1}}为>1,输出为2 true,其他两种情况正常,但我看不到任何明显的结果。

<%= @pending.nil? ? '0' : @pending.count %>
<%= (!@pending.nil? and @pending.count > 1) or (!@pending.nil? and @pending.count == 0) ? 'Pending Quotes' : 'Pending Quote' %>

3 个答案:

答案 0 :(得分:5)

我会使用pluralize帮助器:

<%= pluralize(@pending, 'Pending Quote') %>

答案 1 :(得分:1)

你必须这样写:

((!@pending.nil? and @pending.count > 1) or (!@pending.nil? and @pending.count == 0)) ? 'Pending Quotes' : 'Pending Quote'

你也可以把它写成

(!@pending.nil? && (@pending.count > 1 || @pending.count == 0)) ? 'Pending Quotes' : 'Pending Quote'

答案 2 :(得分:1)

De Morgan ...

的帮助下
@pending.try(:count) == 1 ? 'Pending Quote' : 'Pending Quotes'