我是Ruby on Rails的新手,我不会根据它的数量改变一个单词的结尾。
接近下面代码的顶部,你会看到我写的
h3 "The deal has #{deal.prizes.where(:prize_type => u).count} #{u}
这里的“u”表示名为PRIZE_TYPE的数组中的一个值。 我怎么能这样做
如果count = 1,则显示“该交易有1个累积奖金”
如果count = 4,则显示“该交易有4个累积奖金
注意:计数不能是= 0或< 0
这是我的代码:
panel "Details of Prizes" do
PRIZE_TYPES.each do |u|
table_for deal.prizes.where(:prize_type => u) do |t|
h3 "The deal has #{deal.prizes.where(:prize_type => u).count} #{u}s
initially set in the campaign for a total value of #{custom_number_to_currency (deal.category_prizes_total_initial_value(u)) }", class: 'title-within-table'
if deal.prizes.where(:prize_type => u).count > 0 # if there is at least one record of 'jackpot prize'
t.column("Prize") { |prize| link_to( image_tag( prize.prize_image_url, class: 'main_img_in_admin_interface' ), admin_prize_path(prize), target: :blank ) }
t.column("Name") { |prize| link_to prize.prize_name, admin_prize_path(prize), target: :blank }
t.column("Category") { |prize| prize.prize_category }
t.column("Initial quantity") { |prize| prize.prize_initial_stock_quantity }
end # end of Prize.each...
end # end of panel "details of prizes"
PRIZE_TYPE常量:
PRIZE_TYPES = ["Jackpot prize","Consolation prize", "awesome prize"]
答案 0 :(得分:5)
你可以使用ruby的复数:
prize_type.pluralize(count)
"Jackpot prize".pluralize(1)
#> Jackpot prize
"Jackpot prize".pluralize(2)
#> Jackpot prizes
或ActiveSupport::Inflector.pluralize如果您想自己检查一下:
prize_type.pluralize
"Jackpot prize".pluralize
#> "Jackpot Prizes"
或者rails具有使用组合Inflector和一些基本逻辑的复数:
pluralize(count, prize_type)
pluralize(1, prize_type)
#> 1 Jackpot prize
pluralize(2, prize_type)
#> 2 Jackpot prizes
答案 1 :(得分:3)
您可以使用ruby实例方法
http://apidock.com/rails/ActionView/Helpers/TextHelper/pluralize
"string".pluralize(count)
所以对你的情况来说,
prizes_count = deal.prizes.where(prize_type: u).count
h3 "The deal has #{prizes_count} #{u.pluralize(prizes_count)}"
答案 2 :(得分:2)
使用pluralize
count = deal.prizes.where(:prize_type => u).count
h3 "The deal has #{count} #{u.pluralize(count)}}"
答案 3 :(得分:0)
您可以做
pluralize(1, 'person')
# => 1 person
pluralize(2, 'person')
# => 2 people
pluralize(3, 'person', plural: 'users')
# => 3 users
pluralize(0, 'person')
# => 0 people
pluralize(2, 'Person', locale: :de)
# => 2 Personen