Я пытаюсь выяснить, как использовать gmaps для рельсов в приложении Rails 4. Я опубликовал несколько вопросов по SO в связи с проблемами установки, с которыми я столкнулся в течение последних 3 месяцев. До сих пор я не нашел помощи, которая мне нужна, чтобы попытаться заставить это работать в моем приложении. Учитывая, как простые люди, похоже, предлагают эту настройку, я публикую свой полный вариант использования, чтобы узнать, может ли кто-нибудь обнаружить проблему с моей структурой или прецедентом (в отличие от проблем с подключением драгоценного камня).Gmaps4Rails - начало работы
У меня есть модели для адреса, проекта, профиля и участника. Ассоциации являются:
Адрес
geocoded_by :full_address # can also be an IP address
belongs_to :addressable, :polymorphic => true
Проект
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
has_one :package
Профиль
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
Участник
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
belongs_to :package
В моем Gemfile, у меня есть:
gem 'geocoder'
gem 'gmaps4rails'#, '~> 2.1', '>= 2.1.2'
В моем application.js, я
//= require underscore
//= require gmaps/google
//= require markerclusterer
//= require infobox
В моей папке приложения/поставщик/активов/JavaScripts, у меня есть подчеркивание, и маркерная Википедия кластеризатор файлы. Я сделал это на основании совета в this одном из моих сообщений.
В моей папке просмотра адреса У меня есть частичный под названием new_test_fix_map.html.erb:
<script src="//maps.google.com/maps/api/js?v=3.23&key=<%= ENV['GOOGLE_MAPS_API_KEY'] %>"></script>
<!-- <script src="//maps.google.com/maps/api/js?v=3.18&sensor=false&client=&key=&libraries=geometry&language=&hl=®ion="></script>
-->
<div style='width: 800px;'>
<div id="map" style='width: 800px; height: 400px;'></div>
</div>
<script>
markers = handler.addMarkers();
</script>
<script type="text/javascript">
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
markers = handler.addMarkers(<%=raw @hash.to_json %>);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
});
</script>
В моем шоу странице профиля, у меня есть:
<%= render partial: "addresses/new_test_map_fix" %>
В моем профиле контроллера шоу действия, у меня есть:
def show
# debugger
@addresses = @profile.addresses
@hash = Gmaps4rails.build_markers(@addresses) do |address, marker|
marker.lat address.latitude
marker.lng address.longitude
marker.infowindow address.full_address
end
end
В моих шоу-странице проекта, у меня есть:
<%= render partial: "addresses/new_test_map_fix" %>
В моем проекте контроллера шоу действия, у меня есть:
def show
@project = Project.find(params[:id])
authorize @project
@addresses = @project.addresses
@hash = Gmaps4rails.build_markers(@addresses) do |address, marker|
marker.lat address.latitude
marker.lng address.longitude
marker.infowindow address.full_address
end
В моем адресе контроллере у меня есть:
def show
@hash = Gmaps4rails.build_markers(@addresses) do |address, marker|
marker.lat address.latitude
marker.lng address.longitude
end
end
В моей адресной модели у меня есть:
def full_address
[self.first_line, middle_line, last_line, country_name].compact.join("<br>").html_safe
end
По моему мнению, у меня есть:
<% if @project.package.participant.location_specific == true %>
<%= @project.package.participant.addresses.first.full_address %>
<%= render partial: 'addresses/new_test_fix_map' %>
<% else %>
Remote participation available
<% end %>
В моем контроллере участников у меня есть:
def show
@addresses = @participant.addresses
@hash = Gmaps4rails.build_markers(@addresses) do |address, marker|
marker.lat address.latitude
marker.lng address.longitude
marker.infowindow address.full_address
end
В настоящее время, когда я пытаюсь сделать карту на профиль шоу страницы, все работает.На самом деле я не понимаю, почему данный профиль имеет много адресов, и я еще не просил о первом адресе. Во всяком случае, когда я пытаюсь отобразить карту на странице проектов, я не получаю ошибок, но нет карты. Настройка для проектов и профилей, поскольку касается адреса, точно такая же. Он должен работать для обоих, если он работает для одного. Это не работает вообще для проекта. Кроме того, я не могу заставить его работать для участников, но я подозреваю, что если я смогу решить эту проблему для проекта, то я найду решение для участников.
Когда я ищу в консоли, я могу сделать:
p = Profile.first
p.addresses
Я также могу сделать:
p = Project.first
p.addresses
В обоих случаях адрес возвращается. На странице проектов и профилей отображается напечатанный текст адреса. На странице показа профиля карта отображается правильно.
На странице show projects я вижу у инспектора хрома, что адрес правильно заполняется в обработчике (вместе с широтой и долготой в этом обработчике), но карта не отображает.
Может ли кто-нибудь предложить какие-либо советы по изучению этой проблемы?
Я думаю, что вы можете взять справку из [здесь] (https: //[email protected]/spunkylive/googlemapdemo.git) – SpunkyLive