0

我正在尝试制作涉及位置的活动记录。我从参数中获取经度,并尝试使用该Float()方法将locationLongitudeandlocationLatitude从字符串转换为浮点数,但出现以下错误:

undefined method `call' for #<Class:0x007ffead288530>

以下是该方法可以访问的参数:

{"locationName"=>"Stanford",
 "locationLatitude"=>"37.42839679991957",
 "locationLongitude"=>"-122.17553785073696"}

这是我的控制器中尝试将字符串转换为浮点数并进行查询的方法:

def local
  radius = 10;
  @sort = "local"
  @locationName = params[:locationName]
  @locationLongitude = Float(params[:locationLongitude])
  @locationLatitude = Float(params[:locationLatitude])
  @musings = Musing.(:longitude => (Float(@locationLongitude) - radius)..(Float(@locationLongitude) + radius))

 end

希望你能帮忙。我也尝试过params[:locationName].to_f,但也没有用。

谢谢,保罗。

4

3 回答 3

2

我会说最好将处理从您的local方法中移动到 Musing(或其他)模型。

在您的表单中 - 尝试命名您的参数,使其具有作为最外层的思考。

<input name='musing[locationName' ...>

在控制器中

def local
  # set some vars
  @musings = Musing.search(params[:musing])
end

在模型中

def self.search(params)
  radius = 10
  long = params[:locationLongitude]
  lat = params[:locationLatitude]
  return self unless long and lat
  self.where(:latitude => lat.to_f-radius).where(:long => long.to_f-radius)
end

我可以看到你解决了这个问题 - 但这可能会有所帮助

于 2012-11-03T07:00:52.397 回答
1
Please, change 
params[:locationName].to_f
to
params[:locationName].to_s.to_f
于 2012-11-03T06:58:39.433 回答
0

问题出在这一行:

@musings = Musing.(:longitude => (Float(@locationLongitude) - radius)..(Float(@locationLongitude) + radius))

我写Musing.(...)而不是Musing.where(...)

什么磨砂膏。

于 2012-11-03T06:54:18.963 回答