サイトに到着したときにユーザーの位置を特定する単純な Rails アプリがあります (このコードは、私の application.html.erb ファイルの head タグにあります)。
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
var lat = position.coords.latitude;
var log = position.coords.longitude;
document.cookie = "cl=" + lat + "&" + log + ";";
}
getLocation()
</script>
<p id="demo"></p>
座標は Cookie として保存されます。これらの座標に基づいて、コントローラーの DB から特定のデータ セットを取得するために使用されます。これらの結果はビューに表示されます。
現在、ユーザーが最初にサイトに到着したとき、ページは空白です。ページが更新されると、位置情報がコントローラーを通過し、適切なデータが表示されます。
私がやろうとしているのは、地理位置情報とコントローラーのアクションが最初のページの読み込みで完了するようにすることです。そのため、ユーザーが最初にサイトに到着したときにデータが表示されます。またはもっと簡単に:
- ユーザーの位置の座標を取得する
- コントローラーに座標を渡し、データを取得する
- 次に、ビューにデータを表示します
私の問題の根本は、javascript とコントローラーのイベントの順序にあると思いますが、これを修正する方法がわかりません。