链轮不能正确处理js文件中的动词
Sprockets not properly porcessing erb in js file
我有一个简单的gmaps V3 api调用来根据位置记录中的经纬度生成静态地图。该文件保存在asset/javascripts目录中,命名为location_static_map.erb.js
代码如下:
var location;
function initialize() {
var myOptions = {
zoom: 10,
mapTypeId: google.maps.MapTypeId.HYBRID
};
var map = new google.maps.Map(document.getElementById("location_static_map"), myOptions);
var lat = <%= "#{@location.latitude}" %>;
var lon = <%= "#{@location.longitude}" %>;
location = lat,lon;
map.setCenter(location);
var marker = new google.maps.Marker({
position: location,
map: map,
visible: true,
draggable: false,
title: "Your Location is Here..."
});
}
我得到嵌入的动词代码语法解析错误。请注意,我有其他针对V3 api构建的动态映射,这些映射工作良好,因此这是嵌入式谓词评估....的一个问题还请注意,我已经尝试了文件扩展名为。js。假设我的处理顺序是错误的,但是这会导致'latitude'的未定义方法错误,因为它碰到了Erb代码的第一行....
还注意解析错误发生在生成的application.js文件
欢迎输入.....
这是我的理解,当你发布这段代码到生产中,你将'编译'你所有的js资产到一个单一的application.js文件-这个动词将被评估在那个时候,永远不会再。在开发中,这不是一个问题,因为application.js会针对每个请求进行编译。从你的代码来看,我假设你希望@location值随每个请求而改变,你目前的方法是行不通的。
就您收到的错误而言,是sprokets解析错误还是客户端javascript错误?猜测@location是nil,当js。Erb正在处理中?
你可能想把这段代码包装成一个可重用的javascript函数/对象,然后在调用客户端代码时在视图中设置实例变量?这个调用可以像这样
<script>
window.App.Locator.initialize('<%= @location.latitude %>', '<%= @location.longitude %>');
</script>
在视图中使用这段代码,即使在生产
相关文章:
- 从文本文件js中读取列表
- 当我用ctrl+p搜索时,为什么要在谷歌chrome上使用inspect来调试缺少显示文件js
- 获取用于外部JavaScript文件(.js)的代码提示
- 如何将Javascript文件(.js文件)放在web服务器中
- 如何将 JavaScript 文件(.js 文件)添加到 C# 项目并从 C# 代码调用 JavaScript 方法
- 在 Node 中包含 javascript 文件.js无需 require('.') ing
- 如何使用jquery显示多个文件.多文件.js
- 使用 PDF 打开 PDF 文件.js而不将文件作为查询字符串传递
- 转换颜色十六进制值以用于三个 JSON 文件.js
- 如何使用 jQuery 选择多个文件.多文件.js插件?使用单个关闭按钮一次选择多个文件
- 如何在 Gulp 任务中间添加 CSS 文件.js
- 如何从Dropzone上传和删除文件.js
- 如何在视频中添加视频文件.js 4.2.1.
- 从快速节点下载文件.js具有 JWT 授权
- 访问 JavaScript 文件.js中的 C# 变量
- 在节点中热重载外部 js 文件.js如果文件有任何更改
- 如何在一台服务器中运行不同的.js文件.js NODE JS中的文件
- 如何在多文件.js中上传文件时检查文件扩展名
- 将文件.js中的var导入到模块joomla的模板中,并使用后台进行修改
- 在path项目中编写文件js脚本