如何从另一个模型访问一个模型属性以传入Rails 5中的javascript视图部分?

时间:2017-09-26 07:13:03

标签: javascript ruby-on-rails

我正在尝试从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

非常感谢任何帮助或见解!

1 个答案:

答案 0 :(得分:1)

您没有在show function中获取骑手位置数据。所以,将show功能替换为下面的

def show
  @riders = Rider.joins(:location).select('riders.*','locations.latitude','locations.longitude')
end