gpt4 book ai didi

javascript - 我将如何在我的 postgres 表中为使用 html5 map 的用户保存用户的纬度和经度?

转载 作者:行者123 更新时间:2023-12-02 15:47:08 24 4
gpt4 key购买 nike

因此,我们要做的是,一旦用户单击他/她希望保存其位置,我们就会将其保存到经度和纬度列中。感谢您的帮助和对我们的关注!

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

最佳答案

这里发生的一些事情可能会给您带来麻烦。

  1. 您正在执行 GET 而不是 POSTPUT 来尝试更新用户的纬度和经度。

    尝试将您的 AJAX 调用从 type: 'get' 更改为 type: 'post' 这将帮助 Rails 确定将您的请求路由到哪个 Controller 操作(你想要的是 users_controller#update

  2. 在您的users_controller中,使用params[:id]查找用户,代码如下:

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

  3. 与找到用户的方式相同,您需要从参数中解析出纬度和经度。您的 user_params 方法正在对您实际上并未强制执行的参数做出假设。它让你拥有如下所示的数据:

    { '用户': { '经度': '29.388', '纬度': '187.39848' } }

    但是你的参数看起来像:

    { '经度': '29.388', '纬度': '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

关于javascript - 我将如何在我的 postgres 表中为使用 html5 map 的用户保存用户的纬度和经度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com