1

私は、javascript コールバック関数で gmaps4rails を使用してユーザーの位置を特定し、この位置を地図上にプロットしています。次に、コントローラーでこの位置情報にアクセスし、Ruby ジオコーダーを使用して近くのイベントを照会します。firebug コンソールによると、緯度、経度の座標が投稿されていることがわかりますが、コントローラーでこれらのパラメーターにアクセスしようとすると機能しません。つまり、エラーは発生していませんが、イベントは表示されていません。マップ(ただし、コントローラーコードにユーザーアドレスを直接入力すると、近くのイベントが表示されます)。以下の私のコードを参照してください。どんな助け/提案も大歓迎です。

events/index.html.erb のコールバック

 <% content_for :scripts do %>
    <script type="text/javascript">
    var lat;
    var lng;

Gmaps.map.geolocationSuccess = function(){
      if(Gmaps.map.callback){
        lng = Gmaps.map.userLocation.lng();
        lat = Gmaps.map.userLocation.lat();
        Gmaps.map.addMarkers([{
            "lng": lng,
            "lat": lat,
            "picture": "http://gmaps-samples.googlecode.com/svn/trunk/markers/pink/blank.png",
            "width": "37",
            "height": "34"
        }]);

    $.ajax({
            type: 'POST',
            url: 'events/index',
            dataType: 'json',
            data: "latitude=" + lat + "&longitude=" + lng,          
          });
      }
    };     

    </script>
    <% end %>

イベントコントローラー

  def index
    @events = Event.near(params[:latitude], params[:longitude],2)
    @json = @events.to_gmaps4rails

    respond_to do |format|
      format.html # index.html.erb
      format.js {render json: @events, content_type: 'text/json' }
   end
 end
4

0 に答える 0