@finessestyle

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

投稿データがnilの場合の対処方法について

解決したいこと

Railsで投稿した画像からEXIFRデータを取得して、googleマップに表示しようとしています。
latitudeとlongitudeがない場合にエラーになるので解決したいです。

発生している問題・エラー

NoMethodError in Posts#show
undefined method `latitude' for nil:NilClass
center: {lat: <%= image.gps.latitude %>, lng: <%= image.gps.longitude %> },

該当するソースコード

<div type="text/javascript">
  <script>
    let circleBlue;
    let nRadiusHalfKm = 160;

    function initMap() {
      map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: <%= image.gps.latitude %>, lng: <%= image.gps.longitude %> },
        zoom: 15
      });

      circleBlue = new google.maps.Circle({
        strokeColor: "#3333FF",
        strokeOpacity: 1.0,
        strokeWeight: 2,
        fillColor: "#3333FF",
        fillOpacity: 0.35,
        map: map,
        draggable: false,
        center: {lat: <%= image.gps.latitude %>, lng: <%= image.gps.longitude %> },
        radius: nRadiusHalfKm
       });
    }
  </script>
</div>

自分で試したこと

事前にデータを用意しといて
let latitude = 35.28761370087725;
let longitude = 136.10488198333866;

データを取得できない場合、
if文でimage.gps.latitude.nil?を使えばよいのか
どのように対処すればよいかわかりません。

map = new google.maps.Map(document.getElementById('map'), {
if(image.gps.latitude.empty){
center: {lat: <%= image.gps.latitude %>, lng: <%= image.gps.longitude %> },
zoom: 15
}elseif{
center: {lat: 35.293218336492835 , lng: 136.0993888198985 },
zoom: 15
}
});

0 likes

1Answer

initMapの先頭に
if (image.gps == nil || image.gps.latitude == nil) return;
を追加してはどうでしょうか。

function initMap() {
+     if (image.gps == nil || image.gps.latitude == nil) return;
      map = new google.maps.Map(document.getElementById('map'), {
            :      :
0Like

Your answer might help someone💌