Javascript没有在Rails的回调上执行?

时间:2015-04-21 05:29:52

标签: javascript jquery ruby-on-rails ajax erb

我有两个并排的回调函数,它们似乎执行完全相同的事情。但是,第一个有效,第二个没有 - 它甚至不执行javascript,尽管文件是呈现的。

这里的功能不起作用 - 部分:

<%= button_to 'Delete', todo_path(@item.id, :format => :js, ), 
                :method => :delete,
                :remote => true,
                :form => { "data-type" => "js" },
                :form_class => "btn btn-danger btn-xs" %>

在控制器中:

 def destroy
    @item_id = params[:id]
    if item = Item.find_by_id(@item_id)
      item.destroy
    end

    respond_to do |format|
      format.js {}
    end
  end

在回调上(在todos / destroy.js.erb中):

alert("foobaz");
console.log("baz-foo");
$("#item_<%= @item_id %>").remove();

渲染方法和部分,但javascript不执行(没有警报,没有控制台日志,也没有删除项目):

Started DELETE "/todos/73.js" for ::1 at 2015-04-20 20:24:37 -0700
Processing by TodosController#destroy as JS
  Parameters: {"authenticity_token"=>"sKfPWYP4owepOSDKBtTAoUMN4cVez/d5rz7k+UV0BY9Eu3Qkv/loiSpg4E6hN8Jmqih0+1v0WUROjL8h8IBnyQ==", "id"=>"73"}
  Item Load (4.5ms)  SELECT  `items`.* FROM `items` WHERE `items`.`id` = 73 LIMIT 1
  Rendered todos/destroy.js.erb (0.4ms)

思想?

更新

我刚刚添加了一些Ruby调试:

<% print "HERE I AM" %>

它打印出来了。所以模板正在呈现,而且只是没有调用javascript。仍然不是解决方案:(

此外,在我能说的每一种方式中,它看起来只是只是,就像其他功能一样,除了它在局部呈现之外。

1 个答案:

答案 0 :(得分:2)

非常感谢fylooi关于调试的建议!事实证明,javascript正在执行,但只是在页面上引用了错误的元素。强烈建议使用Firebug(不是内置的调试器)。谢谢!