2015-08-19 17 views
0

所以我們試圖做的是一旦用戶點擊他/她希望他們的位置被保存,我們將它保存到我們的經度和緯度列。感謝您的幫助,併爲我們尋找!我會如何在使用html5地圖的用戶的postgres表格中保存用戶經度和緯度?

https://github.com/rolaandoes/nexu/tree/dev

我們的HTML文件,其中的按鈕是拯救我們的用戶位置(經度,緯度)

<h1>Users#edit for <%= @user.id %></h1> 
    <p>Find me in app/views/users/edit.html.erb</p> 
    <p><button onclick="geoFindMe()" data-id="<%= @user.id %>"id="finder- btn">Geo-Coordnate My Position</button>Send Coordinates to DB</p> 
<div id="out"></div> 
    <h2>Coordinates to DataBase!</br>lat, lon</h2> 
    <a href="#" onclick="this.style.backgroundColor='#990000'">Paint it red</a> 

這是我們的js文件

$(function(){ 

    $('#finder-btn').on('click', function(){ 

    var currentUserId = $(this).attr('data-id') 

    $.ajax({ 
     url: '/users/' + currentUserId, 
     data: { latitude: LatLng[0], longitude: LatLng[1] }, 
     type: 'get', 
     success: function(data) { 
     console.log("Patch Succesful!") 
     }, 
     error: function(err) { 
     console.log("Error Thrown") 
     } 
    }); 
    }); 
}); 


//update location for current_user 

     LatLng = []; 
     console.log(LatLng); 

     var latitude = LatLng[0] 
     var longitude = LatLng[1] 



function geoFindMe() { 
    var output = document.getElementById("out"); 

    if (!navigator.geolocation){ 
    output.innerHTML = "<p>Geolocation is not supported by your browser</p>"; 
    return; 
    } 

    function success(position) { 
    var latitude = position.coords.latitude; 
    var longitude = position.coords.longitude; 


    output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>'; 

    var img = new Image(); 
    img.src = "https://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false"; 

    // console.log(longitude); 
    // console.log(latitude); 
    //PLUCK into Location TABLE 

    // latitude = lat_Jon; 
    // longitude = lon_Jon; 

    LatLng.push(latitude); 
    LatLng.push(longitude); 


    output.appendChild(img); 
    }; 

    function error() { 
    output.innerHTML = "Unable to retrieve your location"; 
    }; 

    output.innerHTML = "<p>Locating…</p>"; 

    navigator.geolocation.getCurrentPosition(success, error); 
} 

我們users_controller,我們需要更新我們經度和緯度表上的位置

def update 
    # @user = User.find(session[:user_id]) 
    user_id = current_user.id 
    @user = User.find(user_id) 
    @user.update_attributes(user_params) 

    puts @user.latitude 
    end 

回答

2

這裏有幾件事情可能會給你帶來麻煩。

  1. 你正在做的GET而不是POSTPUT嘗試和更新用戶的經度和緯度。

    試着改變你的AJAX調用從type: 'get'type: 'post'這將有助於Rails的確定控制器行動路線您的要求(你想要的是users_controller#update

  2. 在你users_controller,使用params[:id]找到用戶,該代碼如下所示:

    user = User.find(params[:user_id])

  3. 在你發現用戶以同樣的方式,你需要分析的緯度和經度OUT參數,你。方法正在假設您沒有實際執行的參數。這事你有數據,看起來像:

    { 'user': { 'longitude': '29.388', 'latitude': '187.39848' } }

    但是你PARAMS樣子:

    { 'longitude': '29.388', 'latitude': '182.3888' }

    所以你需要做同樣的事情上面,使用params[:longitude]params[:latitude]

    我會這樣寫:

    class UsersController < ApplicationController 
        def update 
        user = User.find(params[:id]) 
        user.update!(latitude: params[:latitude], longitude: params[:longitude]) 
        end 
    end 
    
+0

謝謝yez!我們得到了它!我們的教練進來幫助我的隊友出去。我最初想從控制器中解決這個問題。但它看起來像他們已經啓動並運行!我非常感謝你的回答!以下是我們迄今爲止的情況,以便您瞭解我們的工作方式 - https://github.com/rolaandoes/nexu/tree/master – rolaandoes

相關問題