Google map APIで取得した緯度経度をDB(postsテーブル)に保存する
###GoogleMapsAPIをDBに保存したい
Ruby on Railsでlifeという避難情報などを記載した架空のサイトを作成しています。
記事を投稿する機能の実装中にエラーが発生しました。
解決方法を教えて下さい。
メソッドがコントローラーにないよ、といわれている
NoMethodError in Public::PostsController#index
undefined method `fetch_data' for Post:Class
該当するソースコード
post.rb=>
self.fetch_data
select(:classNo, :class, :text, :name, :status, :lat, :lng, :img)
post.ccontroller=>
@posts_data = Post.fetch_data
show.html=>
<div class="font-weight-bold">地図検索</div>
<input id="address" type="textbox" value="GeekSalon">
<input type="button" value="検索" onclick="codeAddress()"> ※下記に記載されている住所を地図上のバーで検索してください。
<div id="display">検索結果が表示されます</div>
<div id='map'></div>
<style>
#map {
height: 400px;
width: 500px;
}
</style>
<script>
let map
let geocoder
const display = document.getElementById('display')
function initMap(){
geocoder = new google.maps.Geocoder(),
map = new google.maps.Map(document.getElementById('map'), {
// latが緯度、lngが経度を示します
center: {lat: 40.7828, lng:-73.9653},
//数値は0〜21まで指定できます。数値が大きいほど拡大されます
zoom: 10,
});
//positionに指定した座標にピンを表示させます
marker = new google.maps.Marker({
position: {lat: 40.7828, lng:-73.9653},
map: map
});
}
//検索フォームのボタンが押された時に実行される
function codeAddress(){
//検索フォームの入力内容を取得
let inputAddress = document.getElementById('address').value;
geocoder.geocode( { 'address': inputAddress}, function(results, status) {
//該当する検索結果がヒットした時に、地図の中心を検索結果の緯度経度に更新する
if (status == 'OK') {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
display.textContent = "検索結果:" + results[ 0 ].geometry.location
} else {
//検索結果が何もなかった場合に表示
alert('該当する結果がありませんでした:' + status);
}
});
}
</script>
この行にAPI記載あり
例)
def greet
puts Hello World
end
自分で試したこと
controllerにfetchを追加
database.ymlに下記を追加
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: <%= ENV.fetch['DB_USERNAME'] %>
password: <%= ENV.fetch['DB_PASSWORD'] %>
host: <%= ENV.fetch['DB_HOST'] %>
development:
<<: *default
database: your_database_name_development
test:
<<: *default
database: your_database_name_test
production:
<<: *default
database: your_database_name_production
0 likes