2013-03-08 54 views
29

我有以下几点:轨的link_to:远程

<%= link_to my_path, method: :delete, confirm: 'Delete?', class: 'link-delete', 'data-message' => 'Are you sure?', 'data-severity' => 'danger', :remote => true do %> 
    <i class="icon-trash"></i> 
<% end %> 

它会弹出一个引导模态进行确认,我想钩住AJAX调用,这样我就可以显示一个微调或某些类型的文本。

我知道,我可以用不显眼的JavaScript来听,像这样的单击事件,如果我不使用“:远程=>真正的”在我的link_to

jQuery -> 
    $('.link-delete').live 'click', (event) -> 
    $('.link-delete').html("Loading...") #THE MSG OR ANIMATION I WANT TO DISPLAY 
    $.get(this.href, null, null, 'script') 
    false 

,但不知道如何结合两个使用':remote => true'

有什么建议吗?

感谢您的帮助

+0

这可能是你在找什么:github.com/rails/ jquery-ujs/wiki/ajax – michaelrshannon 2013-03-08 12:41:25

回答

62

您可以绑定到ajax调用是这样的:

<%= link_to my_path, method: :delete, confirm: 'Delete?', class: 'link-delete', 'data-message' => 'Are you sure?', 'data-severity' => 'danger', :remote => true do %> 
    <i class="icon-trash"></i> 
<% end %> 

$('.link-delete').bind('ajax:beforeSend', function() { 
    $('#mySpinner').show(); 
}); 

$('.link-delete').bind('ajax:complete', function() { 
    $('#mySpinner').hide(); 
}); 
+0

我正在尝试做同样的事情..但不知何故'ajax:complete'不会被解雇,只有'beforeSend'正在工作。Iam在我的情况下使用GET。 – 2015-06-23 00:50:34

+0

@RahulDess您的服务器是否产生响应?我可以想象完成回调不会触发的唯一原因是请求永远不会完成。 – Arjan 2015-06-23 09:11:15

+1

请求成功完成..但明显的一点是,我通过控制器中的javascrpipt呈现部分内容。这个改变什么吗? – 2015-06-23 14:11:17

10

你不需要把两者结合起来。只需使用format.js来调用javascript即可。

在你的控制器:

控制器

def my_method 
    #code here 
    respond_to do |format| 
     format.js {} 
    end 
    end 

my_method.html.erb

<div id = "link-delete"></div> 

my_method.js.erb

$("#link-delete").html("<%= escape_javascript(render(:partial => "text_message"))%>"); 

_text_message.html.erb

<p>Loading...</p> 
+7

'$(“#link-delete”)。html(“<%= escape_javascript(render(:partial =>”text_message“))%>”);' 可缩写为 '$(“#link-delete”)。html(“<%= j render”text_message“)% >“);' – Arjan 2013-03-08 12:29:27

+1

哇,我从来不知道这一点。这真好。但是它将如何知道你正在渲染一个部分或简单的文本?您尚未在渲染中定义部分。 – 2013-03-08 12:32:34

+0

当然,我知道,但那是在执行了ajax请求之后。我想在调用ajax调用之前显示“加载...”消息。 – cgiacomi 2013-03-08 12:34:03