我正在尝试从rider
模型获取location
模型的数据,并将其传递给javascript部分,以便我可以标记每个骑手'位置。
我试图提出关于我打算做什么的正确问题,但没有运气。
这是我的rider.rb
模型。
class Rider < ActiveRecord::Base
has_one :location, as: :profile
end
这是我的location.rb
模型。
class Location < ActiveRecord::Base
geocoded_by :address
belongs_to :profile, polymorphic: true
validates :profile, :latitude, :longitude, presence: true
end
这是我的controllers.rb
。
def show
@riders = Rider.all
end
这是我的show.html.haml
:javascript
var map;
var riders = #{raw @riders.to_json}
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: { lat: 3, lng: 102 },
zoom: 9
});
riders.forEach(function(rider) {
var marker = new google.maps.Marker({
position: { lat: rider.latitude, lng: rider.longitude }, //this line does not work
map: map,
animation: google.maps.Animation.DROP,
title: rider.name.split(' ').slice(0,2).join(' '),
label: rider.name.split(' ').slice(0,2).join(' '),
});
}
当我console.log(riders)
时,这就是结果,错过了我需要的location
属性。
authentication_token: "admin_token_16"
branch_id: 55
deposit_cents: 1000000
email: "leilanimosciskicorkery986@test.com"
id: 19
name: "Leilani Mosciski Corkery"
online: false
order_need_deposit: true
phone:"+9860128134706"
status: "active"
working: false
非常感谢任何帮助或见解!
答案 0 :(得分:1)
您没有在show function中获取骑手位置数据。所以,将show功能替换为下面的
def show
@riders = Rider.joins(:location).select('riders.*','locations.latitude','locations.longitude')
end