Rails数组sort_by在Rails控制台中工作,但不在控制器中工作,抛出" Float与Float的比较失败"

时间:2015-04-09 01:06:32

标签: ruby-on-rails ruby params

在我的控制器中,我有以下内容:

@destinations = Location.all.where("current_forecast like ?", params[:weather])

@destinations.sort_by{ |d|
  d.distance_to([params[:latitude], params[:longitude]])
}.first

这引发了Float与Float的比较失败"错误。但是,如果我在控制台中输入以下内容:

@destinations = Location.all.where("current_forecast like ?", params[:weather])

@destinations.sort_by{ |d|
  d.distance_to([34, -112])
}

我没有收到此错误。为什么呢?

1 个答案:

答案 0 :(得分:0)

params哈希中的值是字符串,需要转换为浮点数。答案只是将distance_to的参数更改为浮点数:

  d.distance_to([params[:latitude].to_f, params[:longitude].to_f])