@Prosecutorr

Восстановление Данных Ruby/JS/Oracle?

омогите в поиске решение проблемы.

Есть 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
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Prosecutorr Автор вопроса
Проблема в destroy_without_raise
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы