2016-01-20 16 views
6

私はruby-on-railsアプリケーションでのデータテーブルのページ内編集を行うためにbest_in_placeを使用しています。インプレース編集は機能しますが、私は コーナーケースが失敗しました。行の項目のペア(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) 
      ) 

は、(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) 

すべてを無駄に:私は は、次のすべてを含め、新しい 一般名に多くの異なったページ要素を設定して実験しています。元の の値がどこに格納されているのかを調べようとしていますが、これら以外のものは見つかりませんでした。

アイデア?

TIA。

レナード

+0

簡単な質問...あなたを行います場合は、ページをリロードするか?あなたの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); 
    }); 

}) 

ビュー:

値はpage..whatに変更されます後
best_in_place @device_name, :email, class: 'not_abort' 
+0

動作しません...もう一度やり直してください。 – Leonard

関連する問題