通过JSON

时间:2018-06-12 18:02:00

标签: ruby-on-rails json api google-api

我正在尝试使用存储在我的数据库中的数据在地图上生成标记。目前显示地图,控制台中没有错误。我假设我没有正确访问数据或者JSON格式不正确。

目前没有使用任何宝石来制作地图, Ruby 2.3.3, Rails 5.1.6, SQLite数据库

当我去骑手/ json时,它会显示一个包含所有骑手数据的数组。

已经尝试了几个小时,并搜索,尝试不同的解决方案。我当前的设置是在终端或检查时不显示错误的设置。我确实看到了“GET”请求和“Rider Load SELECT”车手“。* FROM”车手“在终端中有200个响应。

任何帮助都会受到赞赏,或者对我遗漏的内容的解释会很棒。

下面是我生成地图的_map.html.erb文件,我使用<%= render(“layouts / map”)%>来调用它。在静态页面上。

     <script>
  function initMap() {

        var myLatLng = {lat: 40.014, lng: -105.270};

        var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 12,
        center: myLatLng
        });




        $.getJSON("/riders.json", function ( data )  {
            $.each(data, function(key, data) {

            var latLng = new google.maps.LatLng(data.lat, data.lng );

            var marker = new google.maps.Marker({
                position: latLng,
                map: map
                });
            });
        });



    }

  </script>

  <script async defer
     src="https://maps.googleapis.com/maps/api/js? 
     key=AIzaSyAs2tWVlXznbp6ySamqYXot3sd7wNNLuXI&callback=initMap">
  </script>

views / riders / index.json.jbuilder文件:

    json.array! @riders do |rider|
    json.lat rider.latitude
    json.lng rider.longitude
    end

控制器/ riders_controller:

    class RidersController < ApplicationController
    before_action :set_rider, only: [:show, :edit, :update, :destroy]
    respond_to? :json  #respond_to w/o ? threw an error

    def index
      @riders = Rider.all
      render json: @riders
    end

    def show
      @rider = Rider.where(id: params[:id])
      respond_to do |format|
        format.html
        format.json { render json: @rider }
      end
    end

这是我第一次将数据用于API,任何进一步阅读的链接也会受到欢迎。谢谢。

1 个答案:

答案 0 :(得分:0)

非常小的调整解决了它....

我依靠我的riders.json文件来分配数据,但事实并非如此。

我编辑了:

var latLng = new google.maps.LatLng(data.lat,data.lng);

var latLng = new google.maps.LatLng(data.latitude,data.longitude);

哇我花时间忽略基本的东西是令人震惊的......但我发现使用console.log(JSON.stringify(data.longitude)); (和纬度)正在生成正确的数据,所以它归结为我的问题,我没有正确分配。我很震惊,我昨天没想到这一点。感谢任何花时间阅读本文的人。