Witajcie,
Chcę mieć na formularzu przycisk, który uruchomi operację na bazie danych i odświeży tylko obiekt DataTable, a nie całą stronę. Zrobiłem tak:
w pliku routes.rb dodałem wpis:
resources :insurances do
...
patch 'numbering_groups', on: :member
...
end
Na formularzu “Show” postawiłem przycisk:
<button id="insurance-groups-numbering-and-refresh" ajax-path="<%= numbering_groups_insurance_path(@insurance) %>" class="btn btn-success glyphicon glyphicon-sort-by-attributes">Numeruj grupy</button>
w pliku numbering.js wpisałem:
$('#insurance-groups-numbering-and-refresh').click(function() {
$.ajax({
url: $(this).attr('ajax-path'),
type: 'PATCH',
async: false
});
oInsuranceGroupstable.ajax.reload();
oInsuranceGroupstable.order([2, 'asc']);
oInsuranceGroupstable.draw();
});
- info:
oInsuranceGroupstable - jest obiektem jQuery Datatable, który ma być odświeżony po wykonaniu operacji na danych.
w insurances_controller.rb:
def numbering_groups
@insurance = Insurance.find(params[:id])
@insurance.reorganize_group_numbers
render :nothing => true and return
end
No i w modelu jest funkcja (“reorganize_group_numbers”), która wykonuje właściwą operację na bazie.
No i działa to, ale nie wiem, czy jest to poprawnie zrobione (zgodnie ze sztuką)
Powiedzcie proszę, czy to co zrobiłem “trzyma standard”, czy jej popeliną… szczególnie to
render :nothing => true and return