前提・実現したいこと
マップとリンクした投稿機能を持つアプリを制作しています。投稿時に住所を入力してもらい、それが自動で緯度・経度に置き換わり、データベースに保存されるようになっています。
データベースから緯度・経度の情報を取得し、それを部分テンプレートになっているGoogle Maps APIで変数として受け取り、投稿詳細ページにマップを表示したいです。
発生している問題・エラーメッセージ
任意の投稿の詳細ページにアクセスすると、その前に見ていた投稿の位置情報が引き継がれており、一度リロードしないと現在見ている投稿の位置を表示できません。
該当のソースコード
posts/show.html.erb
<%= render 'map', { lat: @lat, lng: @lng }%>
部分テンプレート(_map.html.erb)
<div id='map'></div> <style> #map { height: 300px; width: 300px; } </style> <script> let map function initMap(){ geocoder = new google.maps.Geocoder() map = new google.maps.Map(document.getElementById('map'), { center: {lat: <%= lat %>, lng: <%= lng %>}, ←ここで変数を渡している zoom: 15, }); marker = new google.maps.Marker({ position: {lat: <%= lat %>, lng: <%= lng %>}, map: map }); } </script> <script src="https://maps.googleapis.com/maps/api/js?language=ja®ion=JP&key=<%=ENV["Google_Maps_API_Key"]%>&callback=initMap" async defer></script>
posts_controller.rb
def show @user = @post.user @spot = Spot.find_by(post_id: params[:id]) @lat = @spot.latitude @lng = @spot.longitude end Spotモデルにlatitude(緯度)longitude(経度)があり、それを@lat,@lngにしています
補足
Ruby 2.6.6
Rails 5.2.4
原因・解決策がわかる方いましたら、ご回答よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。