Ruby on rails 如何使.coffee文件在rails中的窗体中的复选框上工作?

Ruby on rails 如何使.coffee文件在rails中的窗体中的复选框上工作?,ruby-on-rails,Ruby On Rails,首先,我应该在每次修改.coffee文件后运行“bundle exec-rake:precompile”吗?我发现它通常不会自动生效 我有一个表单,我想选中复选框在网页上显示一些内容 我在app\assets\javascripts\testbeds.js.coffee中编写了一个文件,内容如下: alert "ddd" $(".checkbox1").click -> alert "aaa" $("#manually").click -> alert "aaa" $(

首先,我应该在每次修改.coffee文件后运行“bundle exec-rake:precompile”吗?我发现它通常不会自动生效

  • 我有一个表单,我想选中复选框在网页上显示一些内容

  • 我在
    app\assets\javascripts\testbeds.js.coffee
    中编写了一个文件,内容如下:

    alert "ddd"
    
    $(".checkbox1").click ->
      alert "aaa"
    
    $("#manually").click ->
      alert "aaa"
    
    $("#manually").change ->
      alert "aaa"
    
    $('input[type=checkbox]').on 'change', ->
      alert(0)
    
    和一个视图文件:
    app\views\testbeds\edit.html.erb

    <h1>Editing testbed</h1>
    
    <%= render 'form' %>
    <%= link_to 'Show', @testbed %> |
    <%= link_to 'Back', testbeds_path %>
    
    当我单击或选中复选框时,
    警报
    不起作用。但第一行的
    警报
    “ddd”显示正确

    application.js中编译的内容如下所示。我不确定“(jQuery);”是属于上一个函数还是这个函数,只需附加它即可

      }
    
    })( jQuery );
    (function() {
    
      alert("ddd");
    
      $(".checkbox1").click(function() {
        return alert("aaa");
      });
    
      $("#manually").click(function() {
        return alert("aaa");
      });
    
      $("#manually").change(function() {
        return alert("aaa");
      });
    
      $('input[type=checkbox]').on('change', function() {
        return alert(0);
      });
    
    }).call(this);
    // This is a manifest file that'll be compiled into application.js, which will include all the files
    // listed below.
    
    有人能告诉我原因并教我怎么做吗

    非常感谢。

    您可以在('change')上使用
    。以下是普通jQuery中的JSFIDLE(非咖啡):

    在咖啡里,应该是

    $('input[type=checkbox]').on 'change', ->
      alert(0)
    
  • 不,通常不需要在rails开发环境中手动重新编译coffeescript文件

  • 确保你已经阅读了这篇文章。这可能是因为app/assets/application.js需要测试床javascript文件

  • 更改代码只是为了执行一个警报(“测试”),以验证javascript是否正确加载到资产管道中——如果这样做有效,那只是执行jquery绑定的方式有问题

  • 编辑:
    可能出现的问题是,一旦您运行rake资产:本地预编译,它将专门为公共/资产之外的资产提供服务。如果要返回按需编译行为(这是您想要的),则需要删除该目录

    控制台中是否有错误?1:您不需要在开发环境中手动重新编译coffeescript文件,但必须为生产环境运行
    rails资产:预编译
    。@Yoshiji先生我知道,但lalameat post暗示这是在开发环境中的-也许lalameat意味着生产,但我对此表示怀疑。@Yoshiji先生更新了我的帖子,明确表示我指的是开发环境是的,这是开发环境,我总是在app/assets/application.js中查看它。我认为预编译应该只对生产环境生效(还需要对config.assets.precompile进行一些更改以包含该文件)。但也许有时候我看到修改并没有在developmentenv中自动生效。我不确定。那么我是否需要在每次修改后重新启动rais服务器?而且,像我在第一步中所做的步骤3这样的一些更改,它起了作用。无论如何都要保持警惕。我想是上膛了。但是对我发布的代码的更改没有起作用。
    $('input[type=checkbox]').on 'change', ->
      alert(0)