gmaps4rails пустая карта ... Проблема с JavaScript? - PullRequest
1 голос
/ 08 января 2012

Я просмотрел много похожих вопросов и попробовал их предложения, но я все еще получаю полностью пустую карту (без элементов управления).Я уверен, что это что-то простое ...

Использование Rails 3.1.2 и Ruby 1.9.2-p290

У меня есть это в моем нижнем колонтитуле:

<% = yield :scripts %>

Активы включены.В моем application.js есть эта строка ДО строк jquery:

//= require gmaps4rails/googlemaps.js

(я также пытался // = require ./gmaps4rails/googlemaps.js)

assets / javascripts / gmaps4railsкаталог существует и содержит сценарии.

Код моей модели:

# 01/06/2012 - For Gmaps4Rails
    acts_as_gmappable
...
    def gmaps4rails_address
    # 01/06/2012 - For Gmaps4Rails
    "#{self.city}, #{self.country}" 
    end

Мой вид:

<%= gmaps4rails(@json) %>

Мой контроллер:

@json = Party.all.to_gmaps4rails
@parties = Party.all

Я уверен, что у объекта JSON есть данные, потому что (если я добавлю их в представление), я смогу увидеть их, когда страница отобразит: [{"lat": 15.87, "lng": 100.993}, {"lat": 37.0902,"lng": - 95.7129}] Кроме того, если я загляну в свою локальную базу данных MySQL, для этих строк будут установлены значения широты и долготы, а gmaps = 1

Однако все, что я получаю, это большая, полностью пустая область карты (нет элементов управления).

Я предполагаю, что javascript / gmaps4rails / ... НЕ извлекается. Если я просматриваю исходный код, я вижу application.js, но в нем нет упоминания о gmaps.

Если я загляну в firebug под сценариями ... Единственный сценарий \ localhost \ assets, который я вижу, это application.js.Разве я не должен видеть googlemaps.js также?

JavaScript Gmaps * появляется в конце исходного кода представления (... Gmaps.map = new Gmaps4RailsGoogle (); ...)

Я преобразовал это приложение rails в приложение Rails 3 около двух месяцев назад.Возможно, что-то, что обычно автоматически настраивается в новом поколении rails 3-приложений, не включено для меня?Coffeescript?

Что я могу здесь делать не так?Есть предложения?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Быстрая проверка правильности работы Coffeescript в вашем приложении - создать новую file.coffee в app/assets/javascripts/, а затем добавить строку //= require file. Если ваша отображаемая страница затем ссылается на этот новый файл, или (при условии, что ваш конвейер ресурсов настроен таким образом), если ваш обработанный application.js включает в себя обработанный file.coffee, все будет работать правильно.

Если этого не происходит, попробуйте создать новое приложение rails 3.1.2 и выполнить для него рекурсивное diff против вашего приложения. 1 В частности, посмотрите на config/application.rb и config/environments/* файлы. Тогда, очевидно, просто следите за всем, что может отсутствовать в вашем приложении. Существует несколько операторов конфигурации, связанных с конвейером ресурсов, который Rails генерирует с новым генератором приложений, который вы, возможно, пропустили во время обновления. Я сталкивался с проблемами раньше, когда обновлял приложения до 3.1, и это всегда было поучительно.

Мое последнее предложение, которое мне приходит в голову, заключается в том, что вы, похоже, указываете расширение .js в своей директиве application.js require. Это, конечно, не обязательно и может быть причиной того, что его не втягивают.


1. Meld - фантастический графический инструмент для этого, если вы используете Linux или OSX.

0 голосов
/ 15 января 2012

РЕШИТЬ! Проблема заключалась в том, что мой конвейер активов был испорчен из-за перехода с более ранней версии rails. В частности, мне пришлось сделать следующие вещи, чтобы решить эту проблему: Сначала добавьте эти строки в мой gemfile:

# Gems used only for assets and not required
# in production environments by default.
# 01/14/2012 - DC needed to add this manually because this was UPGRADED!
group :assets do
  gem 'sass-rails',   '~> 3.1.5.rc.2'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

# 01/14/2012 - Needed this on linux to clear this bug: line 8: missing name after . operator
gem 'therubyracer', '>= 0.8.2' 

Затем обновление пакета

Я также удалил свой \ public \ assets \ application.js. Я думаю, что это не было автоматически перекомпилировано, потому что это было перенесено из моей предыдущей версии rails.

После этого, BooYah! Это работает!

...