2016-12-05 63 views
0

我試圖根據位置在對象@school附近找到一個對象@center,並在地圖框上顯示中心。我過去在這裏我的代碼,因爲我不知道我所做的:導軌,地圖框和地理編碼器:在另一個對象附近查找對象

這裏是代碼顯示的地圖(含2數據:學校和中心):

<div id="school-map" data-coordinates="<%= @school.coordinates.reverse %>" data-centers="<%= @center.coordinates.reverse %>"> </div> 

這裏是center.rb模型:

class Center 
    include Mongoid::Document 
    include Geocoder::Model::Mongoid 

    has_many :schools 
    accepts_nested_attributes_for :schools 

    field :title,    type: String 

    field :image_path,  type: String 
    field :Attachment_path, type: String 
    field :website,   type: String 

    field :phone,    type: String 

    field :street,   type: String 
    field :zipcode,   type: String 
    field :city,    type: String 
    field :coordinates,  type: Array 

    geocoded_by :adress 
    #after_validation :geocode 

    def adress 
    [street, zipcode, city].compact.joint(', ') 
    end 

end 

在school.rb模式,我試試這個方法:

def center_near_school(school_adress_coordinates) 
school_adress_coordinates = @school.coordinates.reverse 
center = Center.near(school_adress_coordinates, 1, units: :km) 

,我儘量表現串像「是」或「否」要知道,如果我的方法工作:

<% if @school.center_near_school %> 
      <p> OUI </p> 
      <% else %> 
      <p> NON </p> 
      <% end %> 

我創建的關係在這兩種模式中,標記(的has_many:中心:學校,和的has_many)世代是在顯示地圖的show.js中創建的。

有人可以幫助我找到一些解決方案來創建此功能嗎?

不要猶豫,問我來編輯這個職位更多的信息(碼,精度...)

謝謝!

+0

'加入',而不是'聯合'。什麼工作已經? 「接近」是你想寫的一種方法嗎? –

+0

@EricDuminil附近的方法是已經存在的地理編碼器方法 –

+0

所以。什麼可行,什麼不行?你有什麼錯誤嗎? –

回答

1

Center.near(school_adress_coordinates, 1, units: :km)

返回中心的數組,如果沒有中心發現可以爲空。

你的方法應該叫centers_near_school,你可以使用:

<% if @school.centers_near_school.empty? %> 
    <p> NON </p> 
<% else %> 
    <p> OUI </p> 
<% end %> 

在Ruby中,每一個對象是 「truthy」,除了falsenil。在if語句中,甚至一個空數組也被認爲是真的。

+0

謝謝我有一個很好的結果! –

相關問題