0

我目前正在开发一个与 Web 和 iOS 前端相关的 Rails 后端。在 iOS 端,我们目前正在传递纬度和经度,然后计算到服务器上最近对象的距离。

我的问题是,在为 iOS 渲染 json 之前,在我的控制器中,我必须遍历每个对象并添加object[:distance] = distance_calculation if params[:latitude] && params[:longitude].

添加这样的任意属性时,我会收到折旧警告,我认为我可以做一些更好的事情。我曾考虑attr_accessor :distance在对象上添加一个,但我无法根据模型中的参数设置它,因为模型无法访问参数,我仍然需要在 json 渲染之前执行循环。

任何建议将不胜感激!谢谢!

4

1 回答 1

0

我不明白您为什么要尝试在模型上设置距离... iOS 客户端正在发送一个由 lat 和 long 定义的位置,而您到底要做什么?

您的对象已经定位,对吗?否则你将如何确定最近的?

但无论如何,要回答有关设置模型距离的问题,请使用attr_accessor,就像您说的那样:

class Model < ActiveRecord::Base
    attr_accessor :distance
end

在你的控制器中

 object.distance = distance_calculation if params[:latitude] && params[:longitude]

如果您有地理定位模型并尝试计算距离等,您可能需要使用Geocoder 之类的 gem 。

于 2012-08-18T20:01:21.950 回答