htmlのstartボタンを押したら今の現在地の緯度と経度をデータベースに保存するようにしたいです。
保存後にそのページと別のページにリダイレクトしたいと考えています。
しかし、うまくいかないので教えてください。
routes.rb
1"hoge/:id" => "hoge#start"
html.slim
1input type="button" value="start" onclick="hogehoge(#{@hoge.id})"
hoge.js
1function hogehoge(x) { 2 if (navigator.geolocation) { 3 //現在地取得可能 4 navigator.geolocation.getCurrentPosition( 5 function(position) {//success 6 var data = position.coords; 7 var lat = data.latitude; 8 var lng = data.longitude; 9 $.post({ 10 url: "/hoge/"+x, 11 data: {latitude: lat, longitude: lng}, 12 dataType: 'json', 13 success: function(){ 14 alert("success") 15 }, 16 error: function(){ 17 console.log("error") 18 console.log(response) 19 } 20 }); 21 }, 22 function() {//error 23 var errorInfo = [ 24 "原因不明のエラーが発生しました…。" , 25 "位置情報の取得が許可されませんでした…。" , 26 "電波状況などで位置情報が取得できませんでした…。" , 27 "位置情報の取得に時間がかかり過ぎてタイムアウトしました…。" 28 ]; 29 var errorNo = error.code; 30 var errorMessage = "[エラー番号: " + errorNo + "]\n" + errorInfo[ errorNo ] ; 31 alert( errorMessage ) ; 32 }, 33 { 34 "enableHighAccuracy": true, 35 "timeout":10000 36 } 37 ); 38 } else { 39 //現在地取得不可能 40 alert("お使いの端末は現在地が取得出来ません。") 41 } 42}
hoge_controller.rb
1def start 2 @hoge = Hoge.find_by(id: params[:id]) 3 @hoge.longitude = params[:longitude] 4 @hoge.latitude = params[:latitude] 5 if @hoge.save 6 flash[:notice] = "#{@hoge.longitude}#{@hoge.latitude}" 7 redirect_to 'hoge/index' 8 end 9end
回答1件
あなたの回答
tips
プレビュー