我已经查看了许多类似的问题,并尝试了他们的建议,但我仍然得到一个完全空的 Map (没有控件) . 我很确定这很简单......
使用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
但是,我得到的只是一个很大的,完全空的 Map 区域(没有控件) .
我的预感是/ gmaps4rails / ... javascript没有被拉入 . 如果我查看源代码,我可以看到application.js,但它没有提到gmaps .
如果我在脚本下查看firebug ...我看到的唯一\ localhost \ assets脚本是application.js . 我不应该看到googlemaps.js吗?
Gmaps javascript does 出现在最后的视图源中(... Gmaps.map = new Gmaps4RailsGoogle(); ...)
大约两个月前,我将这个rails应用程序转换为Rails 3应用程序 . 也许通常在新的rails 3应用程序生成中自动设置的东西不能为我启用? CoffeeScript的?
我可能在这里做错了什么?有什么建议?
谢谢!
2 回答
SOLVED! 问题是由于从早期的rails版本迁移,我的资产管道全部搞砸了 . 具体来说,我必须做以下事情来解决这个问题:首先,在我的gemfile中添加以下行:
那么 bundle update
我还删除了我的\ public \ assets \ application.js . 我认为这不会自动重新编译,因为它是我之前的rails版本遗留下来的 .
在那之后,BooYah!这是工作!
快速测试Coffeescript是否在您的应用中正确运行是在
app/assets/javascripts/
中创建一个新的file.coffee
然后添加//= require file
行 . 如果您渲染的页面然后引用该新文件,或者(假设您的资产管道以这种方式设置),如果渲染的application.js
包含渲染的file.coffee
,则一切看起来都能正常工作 .如果没有发生这种情况,请尝试创建一个新的rails 3.1.2应用程序并对其应用程序执行递归
diff
. 具体来说,查看config/application.rb
和config/environments/*
文件 . 显然,请留意您应用中可能缺少的任何内容 . 有一些与Rails使用新的应用程序生成器生成的资产管道相关的配置语句,您可能在升级期间错过了这些语句 . 在将应用程序升级到3.1之前,我遇到了麻烦,这一直都很有启发性 .我最后的建议是你似乎在
application.js
require
指令中指定.js
扩展名 . 这当然不是必要的,可能是它没有被吸引的原因 .如果您使用的是Linux或OSX,Meld是一个很棒的图形工具 .