2012-04-09 11 views
0

Ich habe eine Tabelle in einer Ansicht mit nicht eindeutigen IDs. Ich habe eine Ajax-Schaltfläche zum Senden in einer der Spalten, und ich möchte, dass die Ajax-Ergebnisse alle Zeilen in der Tabelle aktualisieren, die mit der ID übereinstimmen. Gibt es das überhaupt zu tun? Ich konnte es nur bekommen, um das erste Auftreten der ID zu aktualisieren.
Danke für jede Hilfe!Mehrere Tabellenzeilen mit Ajax aktualisieren

Hier ist der relevante Code;

Tabellencode aus meiner Sicht;

<% @gifts.each do |gift| %> 

<tr id="<%= gift.parent_id %>"> 
    <% if gift.key_indicator == "Individual" %> 
    <td><%= gift.first_name %> <%= gift.last_name %></td> 
    <% else %> 
    <td><%= gift.organization_name %></td> 
    <% end %> 
    <td><%= l gift.gift_date.to_date, :format => :default %></td> 
    <td><%= number_to_currency(gift.fund_split_amount) %></td> 
    <td><%= if gift.fund_id =~ /\A[Xx]/ then :CND else :US end%></td> 
    <td><%= gift.preferred_primary_email_number %></td> 
    <td><% if @subscriber_ids.include?(gift.constituent_id) %> 
     Yes 
     <% else %> 
     <%= form_for(@teacher.mailing_list_edits.build(:parent_id => gift.parent_id),remote: true) do |f| %> 
      <div><%= f.hidden_field :parent_id %></div> 
     <%= f.submit "Add", :class => "btn btn-large btn-primary" %> 
     <% end %> 
    <% end %> 
    </td> 
</tr> 
<% end %> 

Hier ist meine create.js.erb

$('#<%= params[:mailing_list_edit][:parent_id] %>').html("foobar") 
+0

natürlich ist dies machbar, aber es hängt stark von Ihrer dom-Struktur ab. – apneadiving

+0

Code anzeigen! –

+1

Ich hatte den Eindruck, dass DOM-Element-IDs eindeutig sein sollten, und dass man Klassen verwendete, um Gruppen von Elementen zu spezifizieren? – MrTheWalrus

Antwort

1

voran gehen und in Ihrem create.js.erb zu

<tr id="<%= gift.parent_id %>" class="gift_<%= gift.parent_id %>"> 

Dann ändern:

$('.gift_<%= params[:mailing_list_edit][:parent_id] %>').html("foobar") 

Auf diese Weise können Sie auf mehrere Elemente zugreifen (indem Sie Klassen verwenden) d sie alle leicht ersetzen.

+0

Das hat den Trick gemacht! Vielen Dank! – SteveO7