- Registriert
- 02.04.04
- Beiträge
- 411
Hi,
ich hab ein AJAX Problem bei meiner Rails Anwendung. Und zwar folgendes. Es werden alle eingetragenen Daten (es handelt sich hier um eine Art Nachricht - also Ueberschrift und Nachrichtenkoerper) aus der DB geholt und aufgelistet, allerdings nur die Ueberschrift der Nachricht. Nun habe ich neben den aufgelisteten Ueberschriften jeweils einen Link "Anzeigen","Bearbeiten". Und jetzt kommen wir zum Einsatz von AJAX. Sehen wir das ganze am Beispiel "Anzeigen", da es ja bei Bearbeiten paralell laeuft und nur ein anderer View geladen wuerde.
Bei Klick auf "Anzeigen", soll der gesamte Nachrichtenkoerper unter der Ueberschrift erscheinen. Das funktioniert auch. Mein View dazu:
Wie gesagt, das funktioniert. Der dazugehoerige View (also show.rhtml)
Damit kann ich das Element 'showContainer' auch verstecken. Klicke ich allerdings erneut auf "Anzeigen", passiert garnix. Fuege ich explizit in den View, in dem dieNachrichten aufgelistet werden, jeweils
hinzu zeigt er mir das Element wieder an. Wie macht man das nun richtig ? Wie muss ich vorgehen, damit er das Element anzeigt, unabhaengig davon ob der Request schon gesendet wurde oder nicht ? Aus den Rails Callbacks werde ich nicht wirklich schlau.
Ich hoffe, es ist einigermassen verstaendlich.
ich hab ein AJAX Problem bei meiner Rails Anwendung. Und zwar folgendes. Es werden alle eingetragenen Daten (es handelt sich hier um eine Art Nachricht - also Ueberschrift und Nachrichtenkoerper) aus der DB geholt und aufgelistet, allerdings nur die Ueberschrift der Nachricht. Nun habe ich neben den aufgelisteten Ueberschriften jeweils einen Link "Anzeigen","Bearbeiten". Und jetzt kommen wir zum Einsatz von AJAX. Sehen wir das ganze am Beispiel "Anzeigen", da es ja bei Bearbeiten paralell laeuft und nur ein anderer View geladen wuerde.
Bei Klick auf "Anzeigen", soll der gesamte Nachrichtenkoerper unter der Ueberschrift erscheinen. Das funktioniert auch. Mein View dazu:
Code:
<table>
<% for message in @messages %>
<tr>
<td><%= h(message.title)%></td>
<td><%= link_to_remote("Anzeigen", :update => "showContainer#{message.id}",
:url=>{ :action => 'show', :id => message })%>
</td>
<td><%= link_to 'Bearbeiten', :action => 'edit', :id => message %></td>
<td><%= link_to 'Löschen', { :action => 'destroy', :id => message }, :confirm => 'Are you sure?' %></td>
</tr>
<tr>
<td colspan='6'><div id="showContainer<%=message.id %>"></div></td>
</tr>
<% end %>
</table>
Wie gesagt, das funktioniert. Der dazugehoerige View (also show.rhtml)
Code:
<p><strong>Title:</strong></p>
<p><%=h @message.title %></p>
<p><strong>Text:</strong></p>
<p><%=h @message.message %></p>
<%= link_to 'Edit', :action => 'edit', :id => @message %> |
<a href="#" onclick="Element.hide('showContainer<%[email protected]%>'); return false;">Hide</a>
Damit kann ich das Element 'showContainer' auch verstecken. Klicke ich allerdings erneut auf "Anzeigen", passiert garnix. Fuege ich explizit in den View, in dem dieNachrichten aufgelistet werden, jeweils
Code:
<a href="#" onclick="Element.show('showContainer<%=message.id %>'); return false;">Hide</a>
Ich hoffe, es ist einigermassen verstaendlich.