我有一个Rails应用程序。当JavaScript包含在脚本标记的index.html.erb视图中时,它可以完美地工作。当我将它放在我的application.js文件中时,JavaScript根本不起作用。
这是我的整个application.js文件。此代码不起作用:
<script>
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function(){
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.display === "block") {
panel.style.display = "none";
} else {
panel.style.display = "block";
}
}
}
</script>
这个完全相同的代码在包含在实际视图中的脚本标记中时非常有效:
statement :='COPY (select nombre,dni,edad from test where id=' || i || ') to ''C:\Users\Usuario\Documents\user' || i ||'.csv''';
EXECUTE statement;
有人可以帮我弄清楚为什么会这样吗?感谢
答案 0 :(得分:1)
您的代码未运行,因为它未包含在已编译的application.js
中。您可以通过查看浏览器中javascript文件的来源来验证这一点。
您需要将require_self
添加到sprockets清单中,该清单会注入文件本身的内容:
//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require turbolinks
//= require_self
//= require_tree .
您只需为主“清单”文件执行此操作,因为require_tree .
所需的文件当然包含在内。
请参阅:
- The Assets Pipeline - 2.4 Manifest Files and Directives