在Rails 4中使用Geocoder,我在尝试显示页面上的距离时遇到了问题。我有模特Kid,爸爸和妈妈。孩子属于爸爸妈妈。妈妈是基于地址或在线。
爸爸控制器
def show
@dad = Dad.find(params[:id])
near = Mom.near(@user_location, 5000, :select => "kids.*")
online = Mom.where(is_online: true)
near = near.arel.constraints.reduce(:and)
online = online.arel.constraints.reduce(:and)
mom = Mom.where((near).or(online))
@kids = @dad.kids.joins(:mom).merge(mom).order("moms.is_online DESC")
end
现在,当我尝试在视图中使用distance
时:
<% @kids.each do |kid| %>
<%= kid.mom.distance.round(0) %>
<% end %>
我收到错误:
Undefined method `distance' for #<Mom:0x9e7fc94>
调试后,我发现distance
的{{1}}无效,因为Mom
方法已消失。我不知道我能做些什么来让它再次成为near
模型的一部分。我在这里看到:github.com/alexreisner/geocoder/issues/99和这里:github.com/alexreisner/geocoder#known-issue寻找一些可能的答案。关于我应该做什么的任何想法?
答案 0 :(得分:1)
有趣的是,也许这不是最优雅的解决方案,但是:
<%= kid.mom.distance_to [kid.latitude, kid.longitude] %>