2016-08-30 2 views
2

Я пытаюсь выяснить, как использовать 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=&region="></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 я вижу у инспектора хрома, что адрес правильно заполняется в обработчике (вместе с широтой и долготой в этом обработчике), но карта не отображает.

Может ли кто-нибудь предложить какие-либо советы по изучению этой проблемы?

+0

Я думаю, что вы можете взять справку из [здесь] (https: //[email protected]/spunkylive/googlemapdemo.git) – SpunkyLive

ответ

0

Ну как раз в верхней части я замечаю, что @particpant не определено в действии контроллера контроллера участников. Поэтому, когда @adresses ищет @participant, он может просто просто ничего не вернуть, что может быть проблемой.

В противном случае у меня возникла проблема с чем-то подобным в предыдущем проекте, и одна страница загружалась, а другая - нет, и оказалось, что это проблема Turbolinks, вызывающая загрузку первой страницы скрипта, но вторая страница нет. Для получения дополнительной информации о том, что, см: GMaps4Rails and Turbolinks not loading without full page refresh

+0

Привет Стивен. Спасибо за предложение. У меня установлены турбо-ссылки на false (он сталкивается с olark). Вторая страница никогда не работает для меня, даже если я перезагружу все и сначала перейду на эту страницу. – Mel

+0

Извините! Хотелось бы мне помочь ... –

+0

Спасибо, Стивен. Это так расстраивает, пытаясь учиться. – Mel