2013-03-08 27 views
29

Tôi đã điều sau đây:ray link_to: từ xa

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

mà sẽ trả về một Bootstrap phương thức để xác nhận, và tôi muốn để treo lên các cuộc gọi ajax đó để tôi có thể hiển thị một spinner hoặc một số loại văn bản .

tôi biết rằng tôi có thể sử dụng javascript không phô trương để nghe sự kiện click như vậy, nếu tôi không sử dụng ': từ xa => true' trong link_to tôi

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 

nhưng không chắc chắn làm thế nào để kết hợp hai khi sử dụng ': remote => true'

Mọi đề xuất?

cảm ơn sự giúp đỡ

+0

Đây có thể là những gì bạn đang tìm kiếm: github.com/rails/ jquery-ujs/wiki/ajax – michaelrshannon

Trả lời

62

Bạn có thể liên kết với các cuộc gọi ajax như thế này:

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

tôi đang cố gắng làm điều tương tự ..bằng cách nào đó 'ajax: complete' không bị sa thải. Chỉ' beforeSend' đang hoạt động.Iam sử dụng GET trong trường hợp của tôi. –

+0

@RahulDess Máy chủ của bạn có tạo ra phản hồi không? Lý do duy nhất tôi có thể tưởng tượng cho cuộc gọi lại hoàn toàn không kích hoạt, là các yêu cầu không bao giờ hoàn thành. – Arjan

+1

yêu cầu hoàn thành thành công .. nhưng điểm đáng chú ý là tôi render một phần thông qua javascrpipt trong bộ điều khiển của tôi. Thtat có thay đổi gì không? –

10

Bạn không cần phải kết hợp cả hai. Chỉ cần sử dụng định dạng.js để gọi javascript.

Trong điều khiển của bạn:

khiển

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 (hiển thị (: partial => "text_message"))%> ");' có thể được rút ngắn thành '$ (" # link-delete "). html (" <% = j hiển thị "text_message")% > ");' – Arjan

+1

wow, tôi chưa bao giờ biết điều đó. Nó đẹp. Nhưng làm thế nào nó sẽ biết rằng bạn đang vẽ một phần hoặc chỉ là một văn bản đơn giản? Bạn chưa xác định một phần trong kết xuất của mình. –

+0

Chắc chắn, mà tôi biết, nhưng đó là sau khi yêu cầu ajax được thực hiện. Tôi muốn hiển thị thông báo 'Đang tải ...' trước khi cuộc gọi ajax được gọi. – cgiacomi

Các vấn đề liên quan