2013-03-08 16 views
29

Mam następujący:szyny link_to: zdalnego

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

który wychowuje się Bootstrap modalnych potwierdzenie, i chciałem zahaczyć wywołania AJAX, że tak, że mogę wyświetlić tarczy lub jakiś tekst .

wiem, że mogę używać niezauważalnych JavaScript, aby słuchać zdarzenia click jak tak, jeśli nie używam „remote => true” w moim 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 

ale nie wiem, jak połączyć dwa przy użyciu ": remote => true"

Wszelkie sugestie?

dzięki za pomoc

+0

To może być to, czego szukasz: github.com/rails/ jquery-ujs/wiki/ajax – michaelrshannon

Odpowiedz

62

można wiązać ajax połączeń, takich jak ten:

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

Próbuję zrobić to samo ... ale jakoś 'ajax: complete' nie zostaje zwolniony. Działa tylko' beforeSend'.Używam GET w moim przypadku. –

+0

@RahulDess Czy twój serwer generuje odpowiedź? Jedynym powodem, dla którego mogę wyobrazić sobie kompletne wywołanie zwrotne, którego nie można wywołać, jest to, że żądania nigdy się nie kończą. – Arjan

+1

żądania zakończono pomyślnie., Ale zauważalnym punktem jest to, że renderuję częściowe poprzez javascrpipt w moim kontrolerze. Czy coś zmienia? –

10

Nie trzeba łączyć dwóch. Po prostu użyj formatu format.js, aby wywołać javascript.

W kontrolerze:

Controller

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"))%> ");' można skrócić do '$ (" # link-delete "). html (" <% = j render "text_message")% > ");' – Arjan

+1

wow, nigdy o tym nie wiedziałem. To miłe. Ale jak to będzie wiedzieć, że renderujesz częściowy lub prosty tekst? Nie zdefiniowałeś części w renderingu. –

+0

Pewnie, że wiedziałem, ale to jest po wykonaniu żądania ajax. Chciałbym pokazać komunikat "Ładowanie ..." przed wywołaniem wywołania ajax. – cgiacomi