当放置在application.js中时,Rails app JavaScript无法正常工作

时间:2017-04-18 00:59:01

标签: javascript ruby-on-rails

我有一个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;

有人可以帮我弄清楚为什么会这样吗?感谢

1 个答案:

答案 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