Ruby on rails 3 如何在Rails应用程序中安装OpenLayers?
我很接近,但似乎错过了什么。我在Ruby on rails 3 如何在Rails应用程序中安装OpenLayers?,ruby-on-rails-3,asset-pipeline,openlayers,Ruby On Rails 3,Asset Pipeline,Openlayers,我很接近,但似乎错过了什么。我在app/assets/javascripts中删除了OpenLayers.js,在app/assets/stylesheets中删除了theme文件夹,在app/assets中删除了img文件夹 我在应用程序.css文件中有*=require-theme/default/style.css,在应用程序.js文件中有/=require-OpenLayers 我试图在我的locations.js.coffee文件中加载OpenLayers地图,但img文件夹失败。Op
app/assets/javascripts
中删除了OpenLayers.js
,在app/assets/stylesheets
中删除了theme
文件夹,在app/assets
中删除了img
文件夹
我在应用程序.css
文件中有*=require-theme/default/style.css
,在应用程序.js
文件中有/=require-OpenLayers
我试图在我的locations.js.coffee
文件中加载OpenLayers地图,但img文件夹失败。OpenLayers尝试从/locations/img/..
加载图像文件,而/img/..
似乎也不起作用
我仍然不清楚Rails中的资产管道,我确信我做得不对。我似乎找不到在Rails应用程序中安装OpenLayers的最佳方法的具体示例。有什么想法或建议吗?首先,将您的图像放入
资产/图像
文件夹。这将使他们可以通过http://localhost/assets/yourimage.png
OpenLayers中的默认行为是从img
文件夹中获取图像,该文件夹应位于树结构中与OpenLayers.js相同的级别,而Rails应用程序中则不是这样
要覆盖此行为并使OpenLayers从Rails图像目录读取图像,您应该设置全局变量
OpenLayers.ImgPath=“/assets”
将完整的OpenLayers目录放到供应商/assets/javascripts
中(为了节省一些空间,我制作了一个符号链接):
将//=openlayers/openlayers
添加到app/assets/javascripts/application.js
:
//= require openlayers/OpenLayers
//= require jquery
//= require jquery_ujs
//= require_tree .
如果您的应用程序低于rails 3.1,则需要启用Assets管道,这样才能正常工作。我不能将所有内容都保存在
img
目录中,以便在隔离的情况下更容易查找/升级这些文件吗?供应商/资产路径又如何?我不能在这里安装这些吗?您可以将图像保存在img目录中,但必须将其移动到images文件夹中。然后,图像的路径将是/assets/img/iamge.png Rails假定您的资产位于图像、样式表或javascripts文件夹中。这同样适用于供应商文件夹。这负责加载js,但不处理css样式表和相关图像资产。您不必处理css和图像资产,因为openlayers将为您完成这项工作。通过保持openlayer目录的原样,它知道在哪里可以找到它的css和图像资产。我相信这取决于对OpenLayers的OL内部调用的结果。_getScriptLocation(),其中它正在查找具有特定名称的资产,一旦您进入具有预编译资产的生产环境,它就会崩溃,由于资产名称将附加一个MD5哈希,OL不知道如何查找。KenB,你可能是对的。我没有想到这一点,只是在开发中使用它。你可以尝试一下这家伙在这个gem中所做的事情:他只是设置OpenLayers。_getScriptLocation(),它似乎在生产中对我有用,不知道资产名称和MD5哈希。为了澄清,我没有使用gem,但我只是将他的布局复制给了供应商。我这样做是因为在某个时候我想定制我的OpenLayers构建,因为我实际上是在用它来做一些与映射无关的事情,并且可能会去掉很多代码。
//= require openlayers/OpenLayers
//= require jquery
//= require jquery_ujs
//= require_tree .