谢谢你看我的问题。
我正在开发一个简单的 rails 3 应用程序,只是为了学习框架,基本上我在理解资产管道时遇到了一些麻烦。
我在 app/assets/javascripts 中有一个名为 map.js 的文件,该文件包含一个简单的谷歌地图初始化函数。
我正在使用 require_tree (即我//= require_tree .
的 application.js 文件中有),当我访问时,http://localhost:3000/assets/application.js
我确实看到 map.js 文件已被拉入 application.js
我有以下 application.html.erb 文件:
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true" %>
<%= csrf_meta_tags %>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<%= render 'layouts/shim' %>
<script>
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<%= render 'layouts/header' %>
<div class="container">
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
</html>
即使将 map.js 加载到 application.js 文件中,调用初始化函数也会产生引用错误(未定义初始化)。如何从内联脚本标记访问初始化函数(加载到 application.js)。如果我使用javascript_include_tag
ie手动包含 javascript <%= javascript_include_tag "map.js" %>
,则地图呈现并且一切正常,但我担心 js 文件被加载两次。
我有两个问题。为什么我无法从 application.html.erb 文件中的内联脚本标记访问初始化函数,即使它正在加载?有没有比手动包含更好的方法来解决这种情况?
谢谢您的帮助。