javascript - Rails 4 CoffeeScript 在预编译时不执行

标签 javascript ruby-on-rails ruby-on-rails-4 coffeescript asset-pipeline

我有一个带有一些 Coffeescript 的 Rails 4 应用程序,主要用于在选择另一个列表中的项目时更新列表 - 非常基本的东西。

该脚本在开发中完美运行。然而,一旦预编译完成,即使我在预编译的资源文件中看到了实际的代码,它也根本不会运行。

我将代码减少到非常小的范围,因此它所做的只是在组合框更改但仍然无法工作时显示警报。我还从 asset/javascript 目录中删除了所有 .coffee 文件,只留下这一个 Coffeescript 文件和 application.js 文件,以确保与其他 .coffee 文件不发生冲突。

我也对 Turbolinks 表示怀疑,然后我将其删除,但仍然没有任何变化。

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require_tree .

出席.咖啡

  $('#season_id').on "change", ->
     alert('Success!')

来自 app/views/attendances/_form.html.erb 的表单

<div class="container">
    <form action="/attendances/get_attendance_sheet" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="&#x2713;" />       <table class="table">
            <tr>
                <td>Saison:</td>
                <td><select name="season_id" id="season_id" class="form-control"><option value="">Choisir une saison</option><option value="1">Gadbois 2015</option></select></td>
                <td>Entraînement du:</td>
                <td><select name="session_id" id="session_id" class="form-control"><option value="">Choisir une date d&#39;entraînement</option><option value=""></option></select></td>
                <td><input type="submit" name="commit" value="Ouvrir" class="btn btn-success" /></td>
            </tr>
        </table>
</form></div>

最佳答案

终于找到问题了,非常感谢@itsnikolay。该问题是由于另一个 javascript 文件引发异常所致。通过将它们全部编译成一个文件,异常将使整个脚本停止运行,从而不执行 Coffescripts。

在这种特殊情况下,这是由于 gem Rails-assets-tether 缺少从引导库提供工具提示。

在 Debug模式下,由于所有 javascript 文件都是独立加载的,一个文件的异常不会影响加载其他文件。

关于javascript - Rails 4 CoffeeScript 在预编译时不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37796132/

相关文章:

javascript - 我什么时候需要使用 super(props) 将 prop 传递给 React 组件的构造函数?

javascript - .js 中的 css 语法不兼容吗

ruby-on-rails - 如何使用new_record?,改变了?并坚持?本例中 Rails 中的方法

ruby-on-rails - 向关注点添加方法,但出现未定义的方法错误

ruby-on-rails - Rails 4 ActionMailer around_action |访问操作信息(操作名称和参数)

ruby-on-rails - Rails 3.2.13 与 Rails 4.0.1 - 改变了吗?方法变了?

javascript - 从浏览器到桌面应用程序的信号

javascript - AngularJS ng-hide 不工作

ruby-on-rails - 在不同的 Controller 中设计表单

ruby-on-rails - 从另一个本地分支推送到 heroku