2016-05-20 10 views
0

Ich benutze best_in_place_if für die Inline-Bearbeitung. Hier möchte ich die ID des aktuellen Elements abfangen, das mit dem Ajax-Erfolgsereignis von best_in_place bearbeitet wurde.Rails 3 best_in_place_if Wie füge ich "id" -Attribut zum Element hinzu

Unten ist Codeausschnitt Ich versuche ID-Attribut hinzuzufügen. Aber wenn ich den HTML-Code betrachte, ist der Wert für das Attribut id der Standardwert, der von bes_in_place generiert wird. Laut ihrem Dokument wurde erwähnt, dass der Standardwert geändert werden kann, indem wir unseren eigenen Wert angeben.

Der Standardwert für id-Attribut wird als id = „best_in_place_trip_32_is_active“ gezeigt und ich will, ist nur id = 32

best_in_place_if(current_user.admin,trip,:is_active, :type => :checkbox, :classes => 'trip_disable', :id => trip.id) 

Bitte lassen Sie mich wissen, was ich vermisst.

+0

Was versuchen Sie zu erreichen? Ich bin mir nicht sicher, ob ich diese Frage beantworten kann, aber ich kann Ihnen wahrscheinlich helfen, Ihr Problem zu lösen, da ich "best_in_place" stark benutze. – bkunzi01

Antwort

1

Zunächst sollten Sie nicht versuchen, ein Nur-Zahlen-ID-Attribut für das Element violates the HTML specs zu verwenden.

Dann die id des aktuell bearbeiteten Datensatz in den Erfolg Rückruf zuzugreifen, können Sie fügen Sie den Datensatz id auf die Daten statt zuschreiben. So etwas sollte funktionieren:

# adding the record ID to the data attribute 
best_in_place_if(current_user.admin, trip, :is_active, :as => :checkbox, :class => 'trip_disable', :data => { :id => trip.id }) 

# accessing the record ID in the success calback 
$('.best_in_place.trip_disable').bind("ajax:success", 
         function(){ 
          alert('Record ID is '+$(this).data('id')); 
         }); 

die Best in place docs für weitere Informationen anzeigen.

+0

Danke, das hat funktioniert. –