J'ai un button_to que je veux effectuer une action de mise (il n'y a qu'une seule chose qui peut être mise à jour à propos de cette ressource - elle sera mise à jour comme étant "acquittée", il n'y a donc pas d'autres champs de formulaire associés à la mise au point de la action).
Ceci est à mon avis (le contrôleur est donné explicitement parce que le bouton est sur une vue appartenant à un autre contrôleur): p> dans mon fichier de routes, la ressource a été déclaré comme une ressource reposante: p> Le contrôleur de cette ressource a une action de création et une mise à jour, et la touche_to ci-dessus appelle l'action Créer. Je veux que cela appelait l'action de mise à jour. p> Ceci passe à travers le journal droit avant que la création d'acte incendie: p>
3 Réponses :
Votre syntaxe est légèrement éteinte. BOUTON_TO CODE> prend trois arguments: The Button Titre, une option
Options CODE> HASH et un
HTML_OPTIONS CODE> HASH.
: Méthode =>: Mettez code> doit entrer dans
HTML_OPTIONS CODE>, tandis que les paramètres d'itinéraire doivent entrer dans les options code>. Donc, vous pouvez réécrire comme si:
<%= button_to "Acknowledged", { :controller => 'practice_sessions',
:id => @practice_session.id},
:method => :put %>
Salut, merci pour cela. Je ne reçois pas maintenant «aucun match d'itinéraire» / pratique_sessions ». Je pense que c'est parce que c'est en train de mettre juste / pratique_sessions (comme l'URL par l'URL localhost: 3000 / Pratique_Sessions? ID = 26 ) plutôt que / pratique_sessions / 26 Dans ce cas. Je continuerai à jouer avec ça, mais tous les conseils appréciés!
Quelle est la sortie des itinéraires râteau code>?
Semble comme prévu. Voici les lignes que j'imagine sont d'intérêt: Pratique_Session Mettez /practice_sessions/udid(.:Format) {: action => "mise à jour" ,: contrôleur => "pratique_sessions"} pratique_sessions post /practice_sessions(.:Format) {: action => "créer" ,: contrôleur => "pratique_sesstions"}
J'ai fini par résoudre le problème avec des itinéraires nommés (voir ma réponse), mais j'apprécie votre contribution - cela m'a mis sur la bonne voie.
Vous devrez peut-être explicitement passer le Essayez ceci: p> (notez les bretelles explicites autour de : méthode =>: mettre l'argument code> dans le
HTML_OPTIONS CODE> HASH - Il peut s'agir d'obtenir globbed dans les options code> > Hash.
: contrôleur code> et
: ID code>) p> p>
Hé, cela ne fonctionnerait pas pour moi (voir ma réponse à Zetic), mais j'ai fini par résoudre l'utilisation de itinéraires nommés (voir ma réponse). Merci pour votre contribution, j'aurais dû remarquer les arguments distincts de toute façon.
À la fin, j'ai décidé d'aller avec l'approche plus reposante en utilisant des itinéraires nommés, ce qui semble fonctionner correctement. Je ne suis toujours pas sûr à 100% pourquoi l'autre méthode ne fonctionnerait pas, mais je ne pense pas que cela importe parce que cela semble à la fois a) plus bien rangé et b) plus conventionnel.
<%= button_to "Acknowledge", practice_session_path(@practice_session), :method => :put %>