2016-01-20 100 views
6

我正在使用best_in_place在ruby-on-rails應用程序中對數據表 進行頁內編輯。就地編輯工作,但我有一個 失敗的角落案件。該行中的一對項目(device_name, generic_name)必須是唯一的。如果它們不是唯一的,則服務器端 代碼將具有改變的generic_name的一組名稱返回,以使 該對是唯一的。我使用以下coffeescript更新 顯示屏。best_in_place在更新後保留原始值

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) 
      ) 

此代碼的工作(即它正確地更新與服務器提供 新的通用名稱的頁面),但如果我再點擊回到「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) 

一切都無濟於事。我試圖找到原始值 可能存儲在哪裏,但是除此之外沒有發現任何其他值。

任何想法?

TIA。

倫納德

+0

快速的問題...值獲取的page..what改變之後你得到如果你做一個頁面重新加載?它是否顯示您的JavaScript代碼正在改變的值,還是會回覆原來最好的舊字段? – uday

+0

重新加載後,它會正確顯示更改後的值。我還應該補充一點,我不需要重新加載頁面以獲取更改後的值,如果我只是在「編輯」框外單擊,也會返回到正確(更改)的值。 – Leonard

回答

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' 
+0

不工作...再試一次? – Leonard