Rails:.map()中的if语句

时间:2014-05-19 13:37:16

标签: ruby-on-rails-3

我想将一些值从表映射到数组。工作正常,除了数据库中有一些nil值,这会创建无效的JSON。到目前为止,我有这个:

@markers = ExtendedProfile.all.map{|u|[u.city, u.latitude, u.longitude]}

现在我要做的是检查字段是否已填写,如果没有,则输入默认值。例如if u.latitude == nil我希望在数组中输入0.0,而不是nil。有关如何实现这一目标的任何想法吗?

2 个答案:

答案 0 :(得分:2)

为了更好地理解,您可以扩展为map块语法,如下所示:

@markers = ExtendedProfile.all.map do |u|
  if u.latitude.nil?
    [0, 0]
  else
    [u.city, u.latitude, u.longitude]
  end
end

答案 1 :(得分:1)

使用u.latitude || 0.0

@markers = ExtendedProfile.all.map{|u|[u.city, u.latitude || 0.0, u.longitude || 0.0]}