rails link_to:remote

时间:2013-03-08 10:51:48

标签: javascript ruby-on-rails ajax 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 %>

它会启动一个Bootstrap模式进行确认,我想挂钩ajax调用,以便我可以显示一个微调器或某种文本。

我知道我可以使用不显眼的javascript来听这样的点击事件,如果我不使用':remote =&gt;真的'在我的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 =&gt;时将两者结合使用真的'

有什么建议吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:69)

您可以绑定到这样的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();
});

答案 1 :(得分:11)

您不需要将两者结合起来。只需使用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>