омогите в поиске решение проблемы.
Есть JS скрипты которые выполняют некую функцию.
function delete_estimate_position_type() {
var estpt_tr_jqobj, estpt_action_links_td_jqobj, styep_id, authenticity_token, request_url, stya_id;
styep_id = $(this).attr("styep_id");
// Если только добавили, то удаляем и с DOM
if (styep_id == "") {
estpt_action_links_td_jqobj = $(this).parent();
estpt_tr_jqobj = estpt_action_links_td_jqobj.parent();
stya_id = $("td.service-type-est-position-estimate-position-type-name>input.stya-id-for-styep", estpt_tr_jqobj).val();
estpt_tr_jqobj.remove();
show_stya_delete_link_if_possible(stya_id);
remove_estpgt_if_has_no_estpt($(this).attr("estpgt_id"));
}
else {
// Удаляем с базы данных
authenticity_token = $("#authenticity_token").val();
request_url = "/service_type_est_positions/" + styep_id + "/destroy_from_service_type_config";
$.post(request_url, { authenticity_token: authenticity_token}, process_service_type_est_position_delete, "json");
}
return false;
}
function process_service_type_est_position_delete(response_data) {
var estpt_tr_jqobj, stya_id;
if (response_data.status == "OK") {
estpt_tr_jqobj = $("#styep_id_" + response_data.deleted_styep_id);
stya_id = $("td.service-type-est-position-estimate-position-type-name>input.stya-id-for-styep", estpt_tr_jqobj).val();
estpt_tr_jqobj.remove();
show_stya_delete_link_if_possible(stya_id);
remove_estpgt_if_has_no_estpt(response_data.estpgt_id);
}
else {
show_error($("#styep_id_" + response_data.deleted_styep_id),
"Kļūda dzēšot pakalpojuma veida tāmes pozīciju: " + response_data.error_text);
}
}
Здесь выполняется удаление позиции с service_type. Проблема в том, что когда идёт удаление(функция на верху привязана к кнопке удалить), он удаляет её полностью, а так быть не должно.
Должна быть возможность восстановить. Как? Смотрите, есть вот такая функция которая делает проверку на изменение и выводит попап где спрашивается, "Продолжать без сохранения изменений?" И там 2 варианта, либо "да" либо "нет". Так вот, когда нажимаешь "да", то он не возвращает удалённые данные, а просто переходит на следующую страницу, при этом выкидывая попап.
Есть идеи как это поправить?
P.S даже если после удаления обновить страницу, то строка не вернётся которую удалили, учитывая тот факт, что мы сделали сохранение до того как удалили.
function check_form_changes(){
$(".check_changes").click(function(){
var link = this;
var form_is_changed = false;
$('form').each(function(){
if ($(this).has_unsaved_data()) {
form_is_changed = true;
return false;
}
})
if (form_is_changed){
$.alerts.cancelButton = 'Nē';
jConfirm('Продолжать без сохранения изменений?', 'Brīdinājums', function(result) {
if (result) {
window.location = $(link).attr("href");
}
})
}
})
}
Добавляю код от Ruby
def destroy_from_service_type_config
@service_type_est_position = ServiceTypeEstPosition.find_by_id(params[:id])
@error_messages = ""
if @service_type_est_position.destroy_without_raise
@status = "OK"
else
@status = "ERROR"
@service_type_est_position.errors.full_messages.each do |error_message|
@error_messages += "#{error_message}; "
end
end
render :layout => false
end
def self.destroy_without_raise(id)
destroy(id)
rescue ActiveRecord::Rollback
false
end
def destroy_without_raise
destroy
rescue ActiveRecord::Rollback
false
end