best_in_place在更新后保留原始值

Leo*_*ard 6 ruby-on-rails coffeescript best-in-place

我正在使用best_in_place在ruby-on-rails应用程序中对数据表进行页内编辑.就地编辑工作,但我有一个失败的角落案例.行中的一对项(device_name,generic_name)必须是唯一的.如果它们不是唯一的,则服务器端代码会使用更改的generic_name传回一组名称,以使该对唯一.我使用以下coffeescript来更新显示.

jQuery ->
    $('.best_in_place[data-bip-object="full_dpoint"]').bind(
        "ajax:success", (event, d) ->?
            return if ! d?
            data = JSON.parse(d)
            if ! data.dpoint?
                return
            else
                item_to_edit = "#best_in_place_full_dpoint_" + data.dpoint.dpoint_id + "_generic_name"
                $(item_to_edit).text(data.dpoint.generic_name)
            )
Run Code Online (Sandbox Code Playgroud)

此代码有效(IE正确地使用服务器提供的新通用名称更新页面),但如果我再单击"generic_name"字段,(进入编辑模式),默认编辑文本将更改回原来的名称是在一开始(页面下载时间).我已尝试将许多不同的页面元素设置为新的通用名称,包括以下所有内容:

$(item_to_edit).attr('data-bip-original-content', data.dpoint.generic_name)
$(item_to_edit).attr('data-bip-value', data.dpoint.generic_name)
$(item_to_edit).attr('original-value', data.dpoint.generic_name)
$(item_to_edit).attr('bipValue', data.dpoint.generic_name)
$(item_to_edit).attr('bipvalue', data.dpoint.generic_name)
Run Code Online (Sandbox Code Playgroud)

一切都无济于事.我在dom中试图找到原始值可能存储的位置,但除了这些之外没有找到任何其他东西.

有任何想法吗?

TIA.

伦纳德

小智 0

尝试一下

javascript:

$(document).ready(function () {
    /* Activating Best In Place */
    jQuery(".best_in_place").best_in_place();
    var old_value;
    $(document).on('change', '.not_abort', function (e) {
        console.log(e.target.value);
        old_value = e.target.value;
    });
    $(document).on('ajax:error', '.not_abort', function (e) {
        console.log(e);
        e.target.innerHTML = old_value;
        $(e.target).data('bipOriginalContent', old_value);
    });

})
Run Code Online (Sandbox Code Playgroud)

看法:

best_in_place @device_name, :email, class: 'not_abort' 
Run Code Online (Sandbox Code Playgroud)