Javascript 链轮未正确处理js文件中的erb

Javascript 链轮未正确处理js文件中的erb,javascript,erb,ruby-on-rails-3.1,sprockets,Javascript,Erb,Ruby On Rails 3.1,Sprockets,我有一个简单的gmapsv3api调用,根据位置记录中的lat/lon生成一个静态映射。该文件在asset/javascripts目录中重新命名,名为location\u static\u map.erb.js 代码如下: var location; function initialize() { var myOptions = { zoom: 10, mapTypeId: google.maps.MapTypeId.HYBRID }; var map = new g

我有一个简单的gmapsv3api调用,根据位置记录中的lat/lon生成一个静态映射。该文件在asset/javascripts目录中重新命名,名为location\u static\u 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..."
  });
}
我在嵌入的erb代码上遇到语法分析错误。请注意,我有其他针对V3 api构建的动态映射,它们工作正常,因此这是嵌入式erb评估的一个问题……还请注意,我尝试了文件扩展名为.js.erb,假设我的处理顺序错误,但这导致了“纬度”的未定义方法错误,因为它击中了erb代码的第一行

还要注意,解析错误发生在生成的application.js文件中


任何输入都值得欣赏。…

我的理解是,当您将此代码发布到生产环境中时,您将“编译”所有js资产到单个application.js文件中-erb将在那时进行评估,不再进行评估。在开发中,这不是一个问题,因为application.js是根据每个请求编译的。通过查看您的代码,我假设您希望@location值随每个请求而改变,那么您当前的方法就行不通了

至于您收到的错误,是sprokets解析错误还是客户端javascript错误?在处理js.erb时猜测@location为零

您可能希望将此代码包装成可重用的javascriopt函数/对象,然后在调用客户端代码时在视图中设置实例变量?那个电话可能看起来像这样

<script>
window.App.Locator.initialize('<%= @location.latitude %>', '<%= @location.longitude %>');
</script>

在视图中使用此代码时,erb将在每次请求时重新评估,即使在生产中也是如此

我的理解是,当您将此代码发布到生产中时,您将“编译”所有js资产到一个application.js文件中-erb将在那时进行评估,不再进行评估。在开发中,这不是一个问题,因为application.js是根据每个请求编译的。通过查看您的代码,我假设您希望@location值随每个请求而改变,那么您当前的方法就行不通了

至于您收到的错误,是sprokets解析错误还是客户端javascript错误?在处理js.erb时猜测@location为零

您可能希望将此代码包装成可重用的javascriopt函数/对象,然后在调用客户端代码时在视图中设置实例变量?那个电话可能看起来像这样

<script>
window.App.Locator.initialize('<%= @location.latitude %>', '<%= @location.longitude %>');
</script>

在视图中使用此代码后,erb将在每次请求时重新评估,即使在生产过程中也是如此。我要为此而自责。当然,守则是遵守的。哼!啊,我想你搞定了。我要为此而自责。当然,守则是遵守的。哼!