Ouverture de session

Commentaires récents

Syndication
Flux XML

after_filter :postfiltre1, :postfiltre2, :except=>:index

after_filter :postfiltre1, :postfiltre2, :except=>:index
Posté par jibe38 le Samedi, 6 Septembre, 2008 - 11:58am. Pratique de Ruby on Rails - O'Reilly

Salut à tous, débutant en RoR, je suis sur le chapitre des filtres et ils se passe un truc assez surprenant je vous poste le code et vous explique ce qui se passe, en précisant bien que ça fait une heure que je lis et relis mon code et que c'est exactement ce qu'il y a dans le livre à part le contrôleur qui a un nom différent:

class Testfiltres3Controller < ApplicationController
before_filter :prefiltre1, :prefiltre2, :only=>[:index, :action1]
after_filter :postfiltre1, :postfiltre2, :except=>:index

def initialize
@c = ""
end

#définition des filtres
def prefiltre1
@c += "prefiltre1() "
end
def prefiltre2
@c += "prefiltre2() "
end
def postfiltre1
@c += "postfiltre1() "
end
def postfiltre2
@c += "postfiltre2() "
erase_render_results
render :text=>@c
end
#actions du controleur
def index
@c += "index()"
end
def action1
@c += "action1()"
end
def action2
@c += "action2()"
end
end

Premier problème, aucune action ne lance postfiltre1(), pourtant seul index() est en exception donc logiquement action1() et action2() sont sensées le lancer. Second problème et là je ne comprends vraiment pas, le "render :text=>@c" de postfiltre2() ne fonctionne pas, pour avoir un affichage je suis obligé de mettre un "render :text=>@c" dans action1() et un autre dans action2(), alors que dans l'exemple précédent, ne contenant que deux filtres un pré et un post, le "render :text=>@c" situé dans le postfiltre fonctionnait très bien, y a-t-il un problème pour utiliser plusieurs postfiltres ?



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Options d'affichage des commentaires
Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder" pour activer vos changements.

Sujet: 
pas vraiment solutionné mais un truc qui marche
Auteur: 
jibe38
Date: 
Sam, 06/09/2008 - 12:41

Il semblerait qu'il ait fallu rajouter des vues (ça n'était pas précisé) action1.rhtml et action2.rhtm vierges, ce qui solutionne le problème du "erase_render_results
render :text=>@c"
qui ne fonctionnait pas dans action1() et action2(), et j'ai rajouté ce petit bloc dans postfilter1(), qui est désormais lancé par action1 et action2, mais après postfiltre2 (va comprendre Charles) du coup j'ai inversé postfiltre1 et poste filtre2 dans :
after_filter :postfiltre1, :postfiltre2, :except=>:index.
Mais j'ai l'impression que tout ça ce n'est que de la magouille. Si quelqu'un a une explication je suis preneur.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Il suffit effectivement de
Auteur: 
ducasse
Date: 
Sam, 06/09/2008 - 15:02

Il suffit effectivement de rajouter les vues action1.rhtml et action2.rhtml vides, histoire que l'exception ne soit plus presente.

Par contre en faisant exactement la meme chose j'obtiens bien ce qui est ecrit dans le livre. Le but de l'exemple n'est pas de le modifier pour tenter d'obtenir la meme chose, mais de comprendre a quel moment s'execute les filtres.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
c'est hallucinant, parce que
Auteur: 
jibe38
Date: 
Dim, 07/09/2008 - 12:20

c'est hallucinant, parce que chez moi, rien à faire tel que c'est écrit dans le livre, ça ne fonctionne pas, et pourtant j'ai passé un bout de temps à vérifier que mon code soit identique à celui du livre, j'ai même vérifié lettre par lettre, et rien à faire, obligé de magouiller pour arriver à utiliser plusieurs postfiltres.

Quote:
Le but de l'exemple n'est pas de le modifier pour tenter d'obtenir la meme chose
je suis bien d'accord sur le principe, mais quand ça ne marche pas, je préfère modifier pour arriver à un résultat, et j'en ai passé du temps pour essayer de trouver où ça ne marchait pas.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Nouveaux liens

Qui est en ligne
Il y a actuellement 1 utilisateur et 30 invités en ligne.

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Propulsé par Drupal ]