2 $(document).on('change', '.toggle-persist input[name=wants]', function() {
3 var toggle_group = $(this).parents('[data-remote-href]').first();
4 if (toggle_group.attr('data-persistent-state') == $(this).val()) {
5 // When the user clicks the already-selected choice, or
6 // the fail() handler below reverts state to the existing
7 // state, don't start an AJAX request.
10 $.ajax(toggle_group.attr('data-remote-href'),
17 toggle_group: toggle_group,
21 done(function(data, status, jqxhr) {
23 $(document).trigger('ajax:complete');
24 // Remove "danger" status in case a previous action failed
25 $('label.btn-danger', context.toggle_group).
27 removeClass('btn-danger');
28 // Update last-saved-state
30 attr('data-persistent-state', $(context.input).val());
32 fail(function(jqxhr, status, error) {
34 $(document).trigger('ajax:complete');
35 // Add a visual indication that something failed
36 $('label.btn', context.toggle_group).
37 addClass('btn-danger').
38 removeClass('btn-info');
39 // Select the button reflecting the last-saved-state
40 $('label.btn input[value=' +
41 context.toggle_group.attr('data-persistent-state') +
42 ']', context.toggle_group).
44 if (jqxhr.responseJSON && jqxhr.responseJSON.errors) {
45 window.alert("Request failed: " +
46 jqxhr.responseJSON.errors.join("; "));
48 window.alert("Request failed.");
51 $(document).trigger('ajax:send');