Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 仅当传入位置参数时,才向模型添加距离属性访问器_Ios_Ruby On Rails_Geolocation - Fatal编程技术网

Ios 仅当传入位置参数时,才向模型添加距离属性访问器

Ios 仅当传入位置参数时,才向模型添加距离属性访问器,ios,ruby-on-rails,geolocation,Ios,Ruby On Rails,Geolocation,我目前正在从事rails后端的工作,该后端与web和iOS前端都有关联。在iOS端,我们目前正在输入纬度和经度,然后计算到服务器上最近对象的距离 我的问题是,在我的控制器中,在为iOS呈现json之前,我必须循环遍历每个对象并添加对象[:distance]=distance\u计算,如果参数[:latitude]&¶ms[:longitude] 我在添加这样的任意属性时会收到折旧警告,我认为我可以做得更好。我曾考虑在对象上添加一个attr\u accessor:distance,但我无法

我目前正在从事rails后端的工作,该后端与web和iOS前端都有关联。在iOS端,我们目前正在输入纬度和经度,然后计算到服务器上最近对象的距离

我的问题是,在我的控制器中,在为iOS呈现json之前,我必须循环遍历每个对象并添加
对象[:distance]=distance\u计算,如果参数[:latitude]&¶ms[:longitude]

我在添加这样的任意属性时会收到折旧警告,我认为我可以做得更好。我曾考虑在对象上添加一个
attr\u accessor:distance
,但我无法基于模型中的参数设置此值,因为模型没有参数访问权限,所以我仍然必须在json呈现之前执行循环


如有任何建议,将不胜感激!谢谢

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

你的物体已经被地理定位了,对吗?否则,您将如何确定最近的值

但无论如何,要回答您关于在模型上设置距离的问题,请使用
attr\u访问器
,如您所说:

class Model < ActiveRecord::Base
    attr_accessor :distance
end

如果您有地理定位模型并试图计算距离等,您可能希望使用gem之类的工具。

对象已经地理定位,iOS客户端需要从其当前位置到这些对象的距离。我已经完成了地理位置距离的计算,我只是好奇是否有一种方法可以返回距离,而不必在控制器中循环通过每个对象。我现在想的越多,我不知道还有什么其他的方法。也许这就是你正在做的,但是你应该先找到最近的物体,然后通过它们循环得到距离。因为假设你有一百万个对象,你不可能在这个庞大的集合中加载和迭代;)罗宾,是的,我们的地理定位宝石一次只能返回30颗。谢谢在controller动作中,我在respond to块中呈现json
 object.distance = distance_calculation if params[:latitude] && params[:longitude]