【问题标题】:gmaps4rails empty map... Javascript issue?gmaps4rails 空地图... Javascript 问题?
【发布时间】:2012-01-08 18:26:30
【问题描述】:

我查看了许多类似的问题,并尝试了他们的建议,但我仍然得到一张完全空白的地图(没有控件)。我很确定这很简单......

使用 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

但是,我得到的只是一个大的、完全空的地图区域(没有控件)。

我的预感是 /gmaps4rails/... javascript 没有被拉入。如果我查看源代码,我可以看到 application.js,但它没有提及 gmaps。

如果我在脚本下查看 firebug... 我看到的唯一 \localhost\assets 脚本是 application.js。我不应该也看到 googlemaps.js 吗?

Gmaps javascript确实出现在视图源的末尾(... Gmaps.map = new Gmaps4RailsGoogle(); ...)

大约两个月前,我将此 Rails 应用程序转换为 Rails 3 应用程序。也许我没有启用通常在新的 Rails 3 应用程序生成中自动设置的东西?咖啡脚本?

我在这里可能做错了什么?有什么建议吗?

谢谢!

【问题讨论】:

  • 您的标头中有 吗?
  • 您是否尝试使用 rake 任务复制应用中的 js 文件?
  • apneadiving: 至于产量 :head: 我两种方法都试过了,没有影响。文档说 Rails 3.0.x only 所以我假设在 3.1 中没有必要。我只是把它放回去,它没有任何影响。至于rake任务,你的意思是rails generate gmaps4rails:install命令吗?是的,我已经这样做了,文件 \gmaps4rails\gmaps4rails.base.coffee 和 \gmaps4rails\gmaps4rails.googlemasp.coffee 都存在于该子目录中。我开始认为我缺少处理咖啡脚本所需的东西,因为我从以前的 rails 版本升级...
  • 对于遇到同样问题的下一个用户:我不仅在 application.js 中添加了//= require gmaps4rails/gmaps4rails.googlemaps,还添加了//= require gmaps4rails/gmaps4rails.base 行来解决它。在一切似乎都按预期工作之后:)

标签: ruby-on-rails-3 gmaps4rails


【解决方案1】:

快速测试 Coffeescript 是否在您的应用中正常工作是在 app/assets/javascripts/ 中创建一个新的 file.coffee,然后添加一个 //= require file 行。如果您渲染的页面随后引用了该新文件,或者(假设您的资产管道以这种方式设置)如果您渲染的 application.js 包含渲染的 file.coffee,那么一切似乎都正常工作。

如果没有发生这种情况,请尝试创建一个新的 rails 3.1.2 应用并对您的应用执行递归 diff1 具体来说,请查看config/application.rbconfig/environments/* 文件。那么显然,只需留意您的应用程序中可能缺少的任何内容。有一些与 Rails 使用新应用生成器生成的资产管道相关的配置语句,您可能在升级过程中遗漏了这些语句。我以前在将应用程序升级到 3.1 时遇到过问题,这一直很有启发性。

我想到的最后一个建议是,您似乎在 application.js require 指令中指定了 .js 扩展名。这当然没有必要,可能是它没有被拉入的原因。


1.如果您使用的是 Linux 或 OSX,Meld 是一个出色的图形工具。

【讨论】:

    【解决方案2】:

    已解决! 问题是我的资产管道由于从早期的 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!它正在工作!

    【讨论】:

    • 当然,对不起!我以为我已经有了。感谢您的帮助!
    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 2013-09-23
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    相关资源
    最近更新 更多