更新后,best_in_place会保留原始值

时间:2016-01-20 22:01:50

标签: 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)
            )

此代码有效(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)

一切都无济于事。我在dom中试图寻找原始的地方 值可能会存储,但除了这些之外没有找到任何其他内容。

有什么想法吗?

TIA。

伦纳德

1 个答案:

答案 0 :(得分: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);
    });

})

视图:

best_in_place @device_name, :email, class: 'not_abort'