link_to remote=>true, nicht die Aktualisierung mit ajax
Verwendung von rails3-und Prototyp - (rails.js)
Habe ich eine einfache Liste der Produkte mit edit-und delete-links als Bilder.
Beim löschen eines Produkts, wird die Liste nicht aktualisiert. Aktualisierung der Seite zeigt, dass das Produkt wurde tatsächlich gelöscht.
/app/views/Produkte/Liste.rhtml
<div id="product_list">
<%= render :partial => 'list' %>
</div>
/app/views/products/_list.rhtml
<%= link_to image_tag("delete.png"), { :controller => 'products', :action => 'destroy', :id => product }, :method => :delete, :confirm => "Are you sure?", :remote => true %>
/app/controllers/Produkte.rb
def destroy
Product.find(params[:id]).destroy
@products = Product.all
end
/app/views/products/zerstören.rjs (nicht sicher, was zu tun...)
$(document).ready(function() {
$("#product_list").html("<%= escape_javascript( render(:partial => "list") ) %>");
});
Also die remote-Verbindung scheint zu funktionieren.
Ich bin mir nicht sicher über die Verwendung der ajax-callback update #product_list
Habe ich Folgendes im Kopf der Seite:
$(document).ready(function(){
$('#product_list').bind("ajax:success", function(evt, data, status, xhr){
alert('hello');
})
});
Aber es ist nicht ausgeführt (das ist wahrscheinlich nicht ein Gültiger code für Prototyp) und ich möchte nicht wissen, was sowieso code, um im inneren, so dass meine Liste wird aktualisiert, nachdem er ein Produkt
Jede Hilfe (außer "jQuery") wird sehr geschätzt!
BEARBEITEN: Hier ist der server-log für die Aktion löschen (nach zog ich die javascript-oben zu zerstören.js.erb)
Started POST "/products/destroy/3" for 127.0.0.1 at .....
Processing by ProductsController#destroy as JS
Parameters: {"_"=>"", "id"=>"3"}
[1m[36mProduct Load (0.0ms)[0m [1mSELECT `products`.* FROM `products` WHERE (`products`.`id` = 3) LIMIT 1[0m
[1m[35mSQL (0.0ms)[0m BEGIN
[1m[36mSQL (0.0ms)[0m [1mDELETE FROM `products` WHERE (`products`.`id` = 3)[0m
[1m[35mSQL (78.1ms)[0m COMMIT
[1m[36mProduct Load (0.0ms)[0m [1mSELECT `products`.* FROM `products`[0m
Rendered products/destroy.js.erb within layouts/standard (31.2ms)
Completed 200 OK in 312ms (Views: 62.5ms | ActiveRecord: 78.1ms)
Verarbeitung von ProductsController#zerstören JS also die remote-Verbindung funktioniert
[36mProduct Laden (0.0 ms)[0m [1mSELECT products
. VON products
* Die @Produkte = Produkt.alle ausgeführt
Gerendert products/zerstören.js.erb in layouts/standard die javascript-fie gerendert wird
So, jetzt denke ich, es ist ein problem mit dem javascript-code:
$(document).bereit(Funktion() {
$("#product_list").html("<%= escape_javascript( render(:partial => "Liste") ) %>");
});
Ist diese Art von code unterstützt von prototype? Ich glaube nicht, verwenden jQuery...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand die Antwort auf meine eigene:
/app/controllers/Produkte.rb
/app/views/products/zerstören.js.erb
Warum gibt es KEIN tutorial, code-Beispiel oder alles, was klar über das ajax-Ding in rails3?
Ich war die Verwendung der code-Teile aus 5 verschiedenen blogs, Foren und wirft, und mischen Sie alles zusammen, bis ich die richtige Kombination... seufz
auf repecmps Linien,
legen Sie einfach
:content_type
zu stellen einen Teil der heruntergeladenen Inhalte, wie diese:mit Teil repecmps Antworten:
/app/views/products/destroy.js.erb
:und ich fand diese zu Nacht.
Ich denke, Ihr zerstören-Aktion ist zu viel zu tun, denn es ist die Zerstörung des Produkts und eine Liste mit allen Produkten. Sie könnten etwas tun wie:
/app/controllers/Produkte.rb
/app/views/products/zerstören.js.erb
Solange Ihr Produkt element in der index so etwas wie dom_id, hier ein Beispiel:
Diese Weise Ihr zerstören-Aktion wird nur zur Zerstörung der beabsichtigte Produkt, und wenn der client kein JS es fallback-HTML-Anfrage, die Umleitung zu dem Produkte-index wird entsprechend aktualisiert werden.
Hum... ich werde versuchen, Ihnen zu helfen.
Sind Sie sicher, dass nach dem Klick auf den link löschen, wird die Anfrage so behandelt, als JS ?
Überprüfen Sie auf der log.
Ist Sie die Datei "app/views/products/zerstören.rjs" dargestellt wird ?
Rjs existiert nicht mehr in rails3. Der neue name ist UJS.
Versuchen, benennen Sie die Datei um destroy.js.{haml oder erb}
Ist es besser ?