2016-01-20 11 views
6

Używam best_in_place do edycji na stronie tabeli danych w aplikacji Ruby-on-rails. Edycja lokalna działa, ale mam przypadek narożny , który się nie powiedzie. Para elementów w wierszu (nazwa urządzenia, nazwa_położona) musi być unikalna. Jeśli nie są unikatowe, po stronie serwera kod przekazuje zestaw nazw o zmienionej nazwie ogólnej, aby uczynić unikalną parę. Używam następującego coffeescript do aktualizacji wyświetlacza .best_in_place zachowuje oryginalne wartości po aktualizacji

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

ten kod działa (czyli odpowiednio aktualizuje stronę z serwera dostarczane nową nazwą rodzajową), ale jeśli następnie kliknij z powrotem w „generic_name” dziedzinie, (aby przejść do trybu edycji), domyślny tekst edycji zmienia się z powrotem na to, co było na samym początku (czas pobierania strony). Mam eksperymentował z ustawieniem wiele różnych elementów strony do nowego nazwą rodzajową, w tym wszystkie z poniższych kryteriów:

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

wszystko bezskutecznie. Szukałem w domenie, próbując znaleźć miejsce, w którym można zapisać oryginalną wartość , ale nie znalazłem niczego poza tymi.

Wszelkie pomysły?

TIA.

Leonard

+0

szybkie pytanie ... po wartość zostanie zmieniona w page..what prawda uzyskać, jeśli w przypadku ponownego załadowania strony? Czy pokazuje zmienioną wartość, którą robi twój kod javascript, czy powraca do starego pola wpisanego przez najlepiej na miejscu? – uday

+0

Po ponownym załadowaniu poprawnie pokazuje zmienioną wartość. Powinienem też dodać, że nie muszę ponownie ładować strony, aby uzyskać zmienioną wartość, jeśli po prostu kliknę poza polem edycji, wracam też do poprawnej (zmienionej) wartości. – Leonard

Odpowiedz

0

Spróbuj

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

}) 

widok:

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

Nie działa ... spróbuj ponownie? – Leonard

Powiązane problemy