问题
I have the following:
<%= 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 %>
which brings up a Bootstrap Modal for confirmation, and I wanted to hook onto the ajax call that so that I can display a spinner or some kind of text.
I know that I can use unobtrusive javascript to listen to the click event like so, if I DON'T use ':remote => true' in my 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
but not sure how to combine the two when using ':remote => true'
Any suggestions?
thanks for the help
回答1:
You can bind to ajax calls like this:
<%= 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();
});
回答2:
You don't need to combine the two. Just use the format.js to call the javascript.
In your controller:
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>
来源:https://stackoverflow.com/questions/15292270/rails-link-to-remote