【问题标题】:rails 4 can only call javascript once from link_torails 4 只能从 link_to 调用一次 javascript
【发布时间】:2014-11-04 15:12:43
【问题描述】:

我有一个 Rails 应用程序,其中包含我想使用 javascript 删除并隐藏行的项目列表。

我的经验是,如果我单击一个链接,该项目将被删除并且该行消失。如果我点击另一个,控制器不会被调用,页面只是通过javascript刷新。

show.html.erb

link_to image_tag("bin-20.png", :border => 0), '#', :title => 'Remove this item',
            data:{ deleteitem: item.id }

item.js.coffee
$ ->
    $("a[data-deleteitem]").click -> 
        urllink = "/itemisations/" + $(this).data("deleteitem") 
        divclass = ".item-" + $(this).data("deleteitem")
        $.ajax
        type: "POST"
        url: urllink
        dataType: "json"
        data:
          _method: "delete"
      $(divclass).toggle()
      alert("Item has been removed from your list")

如果我单击一个链接,然后单击另一个。我在控制台中得到的输出是:

POST http://local-dev.com:3000/itemisations/636 200 OK 1.6s       jquery.js?body=1 (line 9632)
GET http://local-dev.com:3000/items/60# 200 OK 7.88s    turboli...?body=1 (line 59)
GET http://local-dev.com:3000/items/60# 200 OK 8.31s

所以我可以看到,在第一次单击时,系统会在控制器上运行删除调用,然后显示视图。但是,在第二次单击时,对控制器的调用未运行...

哦,我运行到咖啡脚本的链接而不是直接到控制器的远程链接的原因是我希望能够在例程中调用切换

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-4 coffeescript


    【解决方案1】:

    好吧,看来我在这里遇到了 turbolink。为了解决这个问题,我将脚本更改为以下内容

    $(document).on 'ready page:load', ->
        $("a[data-deleteitem]").click -> 
            urllink = "/itemisations/" + $(this).data("deleteitem") 
            divclass = ".item-" + $(this).data("deleteitem")
            $.ajax
            type: "POST"
            url: urllink
            dataType: "json"
            data:
              _method: "delete"
          $(divclass).toggle()
          alert("Item has been removed from your list")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多