【问题标题】:JS to coffeescript not working in my rails 3 appJS到coffeescript在我的rails 3应用程序中不起作用
【发布时间】:2023-03-17 04:09:01
【问题描述】:

当直接添加到我的视图中时,我有一些对我来说很好用的 JS...

  #app/views/registrations/index.html.erb
...
    <td><%= check_box_tag 'checked_in', registration.id , registration.checked_in, :class => "check-in" %></td>
...
     <script>
    $(".check-in").bind('change', function(){
        $.ajax({
          url: '/registrations/'+this.value+'/toggle',
          type: 'POST',
          data: {"checked_in": this.checked}
        });
    });
      </script>

呈现的 html 是...

<td><input checked="checked" class="check-in" id="checked_in" name="checked_in" type="checkbox" value="5" /></td>

我去了http://js2coffee.org/ 并通过研磨机运行它,它给了我...

$(".check-in").bind "change", ->
  $.ajax
    url: "/registrations/" + @value + "/toggle"
    type: "POST"
    data:
      checked_in: @checked

所以我将此块添加到 app/assets/javascripts/registrations.js.coffee 并且没有工作。 Firefox Web 控制台中没有抛出任何错误,如果我在页面上查看源代码,则不会生成/显示 JS。但是,如果我在 registrations.js.coffee 文件中执行类似警报“测试”的操作,我会看到它。

有什么想法吗?

【问题讨论】:

  • 每个键/值对后缺少逗号?
  • 您能说得更具体些吗?也许是一个粘贴箱?
  • @Lumbee 您是否将修改后的&lt;script src&gt; 包含在与原始位置相同的位置?它现在可能在任何.check-in 元素实际存在之前运行。尝试在第一行添加$ -&gt; 并缩进其余部分。

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


【解决方案1】:

您的代码最初位于

app/views/registrations/index.html.erb

但是 CoffeeScript 版本作为

进入了资产管道

app/assets/javascripts/registrations.js.coffee

app/assets 脚本将在页面顶部加载,因此当执行 $(".check-in") 时,将不会有任何要绑定的 .check-in 元素并且不会发生任何有用的事情。您需要一个可用于文档的包装器:

$ ->
  $(".check-in").bind "change", ->
    $.ajax
      url: "/registrations/#{@value}/toggle"
      type: "POST"
      data:
        checked_in: @checked

让事情在正确的时间运行。

【讨论】:

  • 仍然没有工作。我可以通过任何方式测试页面显示后是否正在加载。检查页面源,我没有看到任何 JS 那里。
  • 你不会在页面中看到 JS,它将通过&lt;script src="..."&gt; 标签拉入。你的布局中确实有一些东西可以拉入application.js,对吧?
  • 正确,我有一个 js 包含标签,它正在拉动 application.js。我可以在我的 registrations.js.coffee 文件中做一个警报声明,它会正确触发,所以我认为我们可以。
  • 您确定页面加载时有.check-in?这是 Rails4/Turbolinks 吗?
  • 是的,刚刚更新了我原来问题中的视图,将 erb 包含在我的视图中。
猜你喜欢
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 2019-01-12
  • 1970-01-01
  • 2015-01-17
相关资源
最近更新 更多