0

在学习ruby的过程中(本人有java背景)。

我有赋值语句,其中一个的值hash[:name_field]被分配给另一个。但是来自右侧哈希的值有时是空白的。这使我的代码崩溃,因此我添加了三元逻辑.nil ?等......

我很惊讶这不起作用......错误是:

undefined method `nil' for 1133:Fixnum (NoMethodError)

下面是代码:

people_traffic.each do |person|

  person_record = DaysTraffic.new 

  person_record[:name] = person[:name_filed].nil ? 0 : person[:name_filed]
  person_record[:age]  = person[:age_field].nil ? 0 :  person[:age_field]

  person_record.save
end

为什么我会(NoMethodError)得到nil?

谢谢!

4

2 回答 2

6

应该是.nil?(带问号)不是.nil。所以在你的情况下,那将是:

person_record[:name] = person[:name_filed].nil? ? 0 : person[:name_filed]

实际上,您可以像这样写得更简单:

person_record[:name] = person[:name_filed] || 0
于 2013-03-11T21:02:46.773 回答
4

因为#to_i变成这样写的好方法是nil0,

person_record[:age] = person[:age_field].to_i
于 2013-03-11T21:06:25.740 回答