【发布时间】:2016-05-20 00:04:44
【问题描述】:
我有几个供应商js文件,我把它们放在body标签底部的application.html.erb中;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta charset="utf-8" />
<title><%= full_title(yield(:title)) %></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta content="" name="description" />
<meta content="" name="author" />
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<% if (controller.controller_name == "main") %>
<body class="fixed-header no-header">
...
<%= javascript_include_tag 'pace/pace.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'modernizr.custom', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery-ui/jquery-ui.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'boostrapv3/js/bootstrap.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery/jquery-easy', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery-unveil/jquery.unveil.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery-bez/jquery.bez.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery-ios-list/jquery.ioslist.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery-actual/jquery.actual.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'jquery-scrollbar/jquery.scrollbar.min', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'bootstrap-select2/select2.min', 'data-turbolinks-track' => true %>
...
</body>
</html>
然后我声明它们以便 Rails 能够编译 (config/initializers/assets.rb)
Rails.application.config.assets.precompile += %w( pace/pace.min.js modernizr.custom.js jquery-ui/jquery-ui.min.js boostrapv3/js/bootstrap.min.js jquery/jquery-easy.js jquery-unveil/jquery.unveil.min.js jquery-bez/jquery.bez.min.js jquery-ios-list/jquery.ioslist.min.js jquery-actual/jquery.actual.min.js jquery-scrollbar/jquery.scrollbar.min.js bootstrap-select2/select2.min.js switchery/js/switchery.min.js ...)
然后我注册了heroku并创建了一个应用程序,然后我输入了;
1. bundle exec rake assets:precompile RAILS_ENV=production
2. git add .
3. git commit -m "smth"
4. git push heroku master
应用程序工作正常,但问题出在网络选项卡中。我有 application.js 文件,但我有所有供应商的 js 文件。不应该是rails将它们编译成1个文件吗?
编辑: 我真的无法弄清楚我应该如何将供应商 js 文件包含到 rails 应用程序。由于大多数 js 文件在 dom 加载后工作,我希望它们在 body 标记的末尾加载。
我删除了应用程序并再次推送到 heroku。我什么都没改变。现在 js 文件可以工作了,但奇怪的是它似乎没有加载。
我不需要 application.js 文件中的任何供应商文件。
编辑 2
我非常感谢您的回答并试图理解另一件事。
假设我有一个名为 main.rb 的模型,所以我有主文件夹和 home.html.erb 文件。 Rails 创建 main.coffee(我将其更改为 main.js.coffee)。所以如果我把所有相关的js代码放到这个文件(main.js.coffee)中,每当调用home.html.erb时,这个js代码会在页面加载后自动调用,是这样的吗?如果是这样,我将像这样组织页面特定的js代码。谢谢
【问题讨论】:
标签: ruby-on-rails heroku assets precompile