资产管道 - application.js 而非 compiled/loaded
Asset pipeline - application.js not compiled/loaded
我正在使用 rails 4 和 foundation 5,但我无法让 javascript 工作。 Foundation 的导航栏菜单在移动设备上不下拉,我遇到了麻烦 getting the jQuery datepicker to work。在此站点和 Google 上进行了一些搜索后,我认为问题可能出在我使用的 sprockets 版本 2.1.2 上。但是升级后(现在是3.3.4版本)问题还是没有解决
我删除了 application.js
中的所有内容并添加了一个函数来简单地将一个 div 附加到另一个以检查文件是否正在加载所以 application.js
现在看起来像这样:
//= require jquery
//= require jquery_ujs
//= require jquery-ui/datepicker
//= require foundation
//= require_tree .
$(function(){ $(document).foundation(); });
$(document).ready(function (){
$('#test').append("<div class='test'>Test</div>");
});
不幸的是,div
没有被追加。我是 javascript 的新手,我不确定我还能做些什么来弄清楚为什么没有 javascript 被加载。对此的任何帮助将不胜感激。
更多信息
当我尝试导航到 http://localhost:3000/assets/application.js
时,我得到以下信息:
throw Error("Sprockets::FileNotFound: couldn't find file 'self' with
type 'application/javascript'\n (in
/home/sheeka/Documents/workspace/my_projects/ruby/technical_tests/homestay/homestay_test/app/assets/javascripts/application.js:17)")
我以类似的方式提出 application.css.scss
没问题,但我不完全确定这意味着什么。
根据要求:Github repo
查看 http://guides.rubyonrails.org/asset_pipeline.html
中的文档
您需要在 application.js 文件中包含 require_self
。
没有它,将不会加载此文件中的函数。
更新
在您的 app/assets/javascripts/application.js
中将 //= require self
更改为 //= require_self
您的 $(document).ready
函数未加载,因为 turbolinks gem.
在您的应用程序布局中更改此行:
<%= javascript_include_tag "application" 'data-turbolinks-track' => true %>
至
<%= javascript_include_tag "application" %>
但是如果你想保留它,看看这个gem:https://github.com/kossnocorp/jquery.turbolinks
在使用 turbolinks 时,您需要了解一些差异,因此请查看他的文档。
我正在使用 rails 4 和 foundation 5,但我无法让 javascript 工作。 Foundation 的导航栏菜单在移动设备上不下拉,我遇到了麻烦 getting the jQuery datepicker to work。在此站点和 Google 上进行了一些搜索后,我认为问题可能出在我使用的 sprockets 版本 2.1.2 上。但是升级后(现在是3.3.4版本)问题还是没有解决
我删除了 application.js
中的所有内容并添加了一个函数来简单地将一个 div 附加到另一个以检查文件是否正在加载所以 application.js
现在看起来像这样:
//= require jquery
//= require jquery_ujs
//= require jquery-ui/datepicker
//= require foundation
//= require_tree .
$(function(){ $(document).foundation(); });
$(document).ready(function (){
$('#test').append("<div class='test'>Test</div>");
});
不幸的是,div
没有被追加。我是 javascript 的新手,我不确定我还能做些什么来弄清楚为什么没有 javascript 被加载。对此的任何帮助将不胜感激。
更多信息
当我尝试导航到 http://localhost:3000/assets/application.js
时,我得到以下信息:
throw Error("Sprockets::FileNotFound: couldn't find file 'self' with type 'application/javascript'\n (in /home/sheeka/Documents/workspace/my_projects/ruby/technical_tests/homestay/homestay_test/app/assets/javascripts/application.js:17)")
我以类似的方式提出 application.css.scss
没问题,但我不完全确定这意味着什么。
根据要求:Github repo
查看 http://guides.rubyonrails.org/asset_pipeline.html
中的文档您需要在 application.js 文件中包含 require_self
。
没有它,将不会加载此文件中的函数。
更新
在您的
app/assets/javascripts/application.js
中将//= require self
更改为//= require_self
您的
$(document).ready
函数未加载,因为 turbolinks gem.
在您的应用程序布局中更改此行:
<%= javascript_include_tag "application" 'data-turbolinks-track' => true %>
至
<%= javascript_include_tag "application" %>
但是如果你想保留它,看看这个gem:https://github.com/kossnocorp/jquery.turbolinks
在使用 turbolinks 时,您需要了解一些差异,因此请查看他的文档。