Auparavant, dans les rails 2.3.8 j'ai utilisé les prototypes-helpers link_to_remote
et form_remote_for
(entre autres).rails3 rails.js et jquery capturant le succès et l'échec des demandes ajax
Ceux-ci avaient l'option :update
comme suit:
link_to_remote "Add to cart",
:url => { :action => "add", :id => product.id },
:update => { :success => "cart", :failure => "error" }
(un exemple de la documentation). Cet exemple, en cas de succès, mettrait à jour l'élément html avec la classe "cart" et, en cas d'échec, la classe "error".
Maintenant, je crois que le modus operandi a changé, au contraire, nous écrivons:
link_to "Add to cart", :url => {:action => "add", :id => product.id},
:remote => true
et il n'y a pas possibilité de définir :update
plus. Au lieu d'un html normal, nous rendons maintenant javascript, comme celui-ci (en jquery):
$('.cart').replaceWith(<%= escape_javascript(render :partial => 'cart') %>)
mais comment gérez-vous une situation d'erreur? Est-ce que je le manipule dans mon contrôleur, et utilise des vues séparées?
Il me semblerait utile de pouvoir imiter le comportement que nous avions auparavant. Des idées?
Suis-je le seul qui pense a pris du recul en supprimant le simple javascript de Rails? – Amala
Comme css sépare une grande partie de la mise en page du contenu (HTML), il est également préférable de séparer le comportement du HTML (utilisez donc js discret). Bien que cela soit, en effet, plus difficile (au début), il facilite également la lecture de votre HTML/JS (utilisez judicieusement vos noms de classe et vos identifiants), et rend votre JS plus facile à maintenir et à réutiliser dans le long courrier. – nathanvda
'ajax: loading' ne fonctionnait pas pour moi, je devais utiliser 'ajax: before' - juste au cas où quelqu'un d'autre rencontrerait ce problème. (Rails 3.1.1) – tmaximini