我正在爲我的一個小項目使用gmap4rails。我想從用戶的當前位置傳入緯度和經度值,並將這些值設置爲我的稱爲Pet的模型。寵物模型屬於用戶模型,用戶模型有許多寵物。我希望能夠在創建新寵物時做到這一點,以便寵物收養信息具有座標。如何將javascript變量傳入Rails控制器?
我明白,對於AJAX請求,它需要一個url來了解應該採用哪條路徑。由於寵物屬於模型,我不知道如何將路徑添加到url參數中。我做了一個耙路線,看看要使用的路線和理想,我應該使用哪一個是POST路線:
/users/:user_id/pets(.:format)
難道我複製到URL,因爲它是還是我需要以某種方式獲得與JS的USER_ID ?
到目前爲止,我已經創建了一個js文件看起來像這樣:
var lat;
var lon;
$(document).ready(function() {
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(setLatLon);
}
function setLatLon(position) {
lat = position.coords.latitude;
lon = position.coords.longitude;
}
//function for logging in and passing lat and lon to the controller
$(function() {
$("#save").click(function() {
//create ajax request
console.log("creating ajax request")
$.ajax({
type: 'POST',
url: "users/pets",
data: 'lat=' + lat + '&lon=' + lon
})
});
});
});
寵物型號:
class Pet < ActiveRecord::Base
belongs_to :user
validates :name, presence: true
validates :species, presence: true
validates :breed, presence: true
validates :description, presence: true
def self.setCoords(lat, lon)
self.lat = lat
self.lon = lon
end
end
Pet_controller創建DEF:在控制檯
def create
@user = User.find(params[:user_id])
@pet = @user.pets.create(pet_params)
@pet.setCoords(params[:lat], params[:lon])
if @pet.save
redirect_to user_path(@user)
else
render 'new'
end
end
錯誤:
creating ajax request getCoords.js?body=1:17
POST http://localhost:3000/users/1/pets/users/pets 404 (Not Found) jquery.js?body=1:9667
POST http://localhost:3000/users/1/pets 500 (Internal Server Error) jquery.js?body=1:9667
我會更好地嘗試將js文件另存爲js.erb文件嗎?我想,也許我可以嵌入我從耙了航線路線...
你目前的網址是? – Santhosh
url:「users/pets」 – user3701329
執行過程中有一些錯誤。點擊有2個POST請求'POST http:// localhost:3000/users/1/pets/users/pets 404(Not Found)'和 'POST http:// localhost:3000/users/1/pets 500 ' – Santhosh