In order to have google maps work properly with turbolinks, add the javascript tag directly to the layout header rather than including it in a view.
# app/views/layouts/my_layout.html.haml
!!!
%html{:lang => 'en'}
%head
- # ...
= google_maps_api_script_tag
The google_maps_api_script_tag
is best defined in a helper.
# app/helpers/google_maps_helper.rb
module GoogleMapsHelper
def google_maps_api_script_tag
javascript_include_tag google_maps_api_source
end
def google_maps_api_source
"https://maps.googleapis.com/maps/api/js?key=#{google_maps_api_key}"
end
def google_maps_api_key
Rails.application.secrets.google_maps_api_key
end
end
You can register your application with google and get your api key in the google api console. Google has a short guide how to request an api key for the google maps javascript api.
The api key is stored in the secrets.yml
file:
# config/secrets.yml
development:
google_maps_api_key: '...'
# ...
production:
google_maps_api_key: '...'
# ...
Don't forget to add config/secrets.yml
to your .gitignore
file and makre sure you don't commit the api key to the repository.