Rails, gmaps4rails не работают с https - PullRequest
1 голос
/ 15 сентября 2011

В настоящее время я использую Rails 3.0.9 и gmaps4rails 0.8.6.

У меня проблема с включением https для карт Google.

Я пытался использовать это решение:

Использование gmaps4rails с https / SSL

Но безуспешно.

В приложении макета я добавил теги js include:

<%= javascript_include_tag "https://maps.google.com/maps/api/js?sensor=false&libraries=geometry" %>
<%= javascript_include_tag "https://google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.5/src/infobox.js" %>
<%= javascript_include_tag "gmaps4rails.js" %>
<%= javascript_include_tag "https://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclusterer/1.0/src/markerclusterer_compiled.js" %>

Код моего контроллера

...
@places = Place.paginate(:page => params[:page], :per_page => 10)
@json = @places.to_gmaps4rails

View

...
 <div id="mapLocal"> <%= gmaps4rails(@json, true false) %> </div>
...

После этого карты Google по-прежнему работают с http.

Исходный код страницы

function gmaps4rails_loadScript() {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = "http://maps.google.com/maps/api/js?sensor=false&libraries=geometry&callback=gmaps4rails_init";
  document.body.appendChild(script);
}

Я пытался изменить gmaps4rails на gmaps.

Результат:

Completed 500 Internal Server Error in 54ms


ActionView::Template::Error (undefined method `to_gmaps4rails' for #<String:0xf5d98528>):
    13: <script type="text/javascript" charset="utf-8">
    14: function gmaps4rails_init() {
    15:     <% #true is passed here to trigger map initialization %>
    16:     <%=raw options.to_gmaps4rails(true) %>
    17: }
    18:   
    19: function gmaps4rails_loadScript() {
  app/views/places/index.html.erb:4:in `_app_views_places_index_html_erb___671263203__86055108_0'

Поэтому я решил обновить gem (возможно, старая версия не поддерживает ssl?).

После обновления с 0.8.6 до 1.1.4 карта даже не генерируется с моим основным неизменным кодом

  <div id="mapLocal"> <%= gmaps4rails(@json) %> </div>

Я проверил журналы js с помощью firebug, и он возвращает

Gmaps4RailsGoogle is not defined
Gmaps.map = new Gmaps4RailsGoogle(); 

1 Ответ

3 голосов
/ 15 сентября 2011

Вам следует обновить версию gem до последней версии: Gmaps4RailsGoogle не существует в 0.x.x.

Для использования 1.x.x вам потребуется дополнительный файл:

gmaps4rails.googlemaps.js

И «gmaps4rails.js» теперь является «gmaps4rails.base.js»

Используя установщик, вы скопируете все.

При использовании помощника gmaps в качестве первого аргумента необходимо указать хеш:

gmaps( :markers => { :data => @json } )

Некоторые изменения, когда это необходимо при кодировании 1.0.0, теперь можно создавать несколько карт на одной странице. Во всяком случае, все документы в вики. Я полагаю, что все эти указания отвечают вашим потребностям.

...