每次在开发模式下更改.coffee文件时,Rails都会在同一个/ javascripts目录中创建相应的.js文件。结果是Rails最终处理了两个文件,因此我没有触发一次事件,而是结束了两次触发事件。我必须记得手动删除.js文件,以便我得到正确和预期的行为。
我的问题是:如何防止Rails首先生成.js文件?是不是应该在开发模式下编译内存中的.coffee文件?当我删除生成的.js文件时,我得到了正确和预期的行为?
感谢。
巴勒特
答案 0 :(得分:1)
检查页面的<head>
部分。您可以在运行应用时查看页面来源进行检查。如果你这样做,我敢打赌你会看到一个或多个包含两次的.js文件。确保您的视图中某处没有不必要的javascript_include_tags。
除非您更改app/assets/javascripts/application.js
中的默认require语句,否则只要您的布局设置为包含它们(默认情况下),就会自动包含其中的所有javascript文件。
具体来说,如果你的application.js中有这一行:
//= require_tree .
或
//= require_directory .
这将导致app / assets / javascripts目录中的所有.js文件(以及子目录,如果您有require_tree)包含在页面中具有以下内容的位置:
<%= javascript_include_tag 'application' %>
通常会出现这种情况,因为它将在您的默认布局中(app/views/layouts/application.html.erb
)。
因此,如果它们已经包含在您的布局中,您需要确保不再以任何其他方式包含它们。
您可以尝试的另一件事是从布局中删除包含,然后使用javascript_include_tag
在每个视图中手动包含javascript文件。