web-dev-qa-db-fra.com

rails link_to: remote

J'ai les éléments suivants:

<%= 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 %>

qui fait apparaître un Bootstrap Modal pour confirmation, et je voulais accrocher à l'appel ajax pour que je puisse afficher un spinner ou une sorte de texte.

Je sais que je peux utiliser du javascript discret pour écouter l'événement click comme ça, si je N'utilise PAS ': remote => true' dans mon 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

mais je ne sais pas comment combiner les deux lors de l'utilisation de ': remote => true'

Aucune suggestion?

merci pour l'aide

35
cgiacomi

Vous pouvez vous lier aux appels ajax comme ceci:

<%= 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();
});
70
Arjan

Vous n'avez pas besoin de combiner les deux. Utilisez simplement le format.js pour appeler le javascript.

Dans votre contrôleur:

Contrôleur

 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>
11
My God