Graal contrôleurs de passer des paramètres
Mon contrôleur est le suivant:
def participated = {
def temp = ConferenceUser.get(params.temp)
def prizes = Prizes.findAllByConferenceUser(temp) //find all rooms where current computer is
def subms = Submissions.findAllByConferenceUser(temp) //find all rooms where current computer is
[temp: temp, priz: prizes, subm: subms]
}
Mais de toute façon, quand j'ai réussi à mettre à jour une conférence de valeur, je veux retourner à la page initiale (participé) mais je ne sais pas comment faire pour passer en les params.temp
. (si je fais une simple redirection, comme le contrôleur attend params.temp
, ça me donnera une erreur parce que je ne peut pas rechercher les prix avec un objet null comme paramètre. Alors, imaginez ma mise à jour du contrôleur est la suivante:
def update = {
def saveParamshere = params.temp
...
...
(code here)
...
...
redirect(action: "participated", params: [temp: saveParamshere])
}
Ce code ne fonctionne pas. Comment j'ai réussi à revenir à ma page principale et passer dans params.temp
?
OriginalL'auteur VictorArgentin | 2011-05-26
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème est peut-être, que vous appelez
update
action en présentant le formulaire (je suppose). Peut-être que vous n'êtes pas en passanttemp
valeur de cette forme? Vous pouvez le faire en intégranttemp
comme champ caché dans le formulaire, ou de l'appliquer à l'url parparam
l'attribut de balise form.À l'aide de champ caché il pourrait être quelque chose comme ceci (dans votre fichier de vue):
À l'aide de
params
attribut:Je n'ai pas testé l'un de ces il y aurait peut-être certains problèmes, en particulier dans la seconde approche.
OriginalL'auteur jjczopek
Vous pourriez mettre les paramètres dans le flash de la portée, qui vit pour deux demandes, ou les mettre dans la session et de les récupérer de cette façon.
Voici un lien vers le graal docs sur l'utilisation du flash la portée:
Graal - Contrôleurs - Contrôleur Étendues
flash portée pour les deux demandes? jamais entendu parler de...
Yep, flash portée vies pour la requête en cours et le suivant (c'est à dire survit redirections). Ce faisant, flash.temp = params.temp dans la mise à jour d'action devraient signifie que vous pouvez accéder à flash.temp dans la redirection de l'action.
À partir de la documentation: "Flash scope est un concept introduit par les Rails. C'est un magasin de stockage temporaire pour les attributs qui doivent être disponibles pour cette demande et que la demande suivante. Ensuite, les attributs sont effacées. C'est utile pour la création d'un message directement avant la redirection, par exemple"
my bad, j'ai oublié qu'il survit redirections.
OriginalL'auteur revdrjrr