Je veux avoir un form_for @user
mais l'envoyer à une action personnalisée dans le contrôleur des utilisateurs.
Comment puis-je le faire ?
Je veux avoir un form_for @user
mais l'envoyer à une action personnalisée dans le contrôleur des utilisateurs.
Comment puis-je le faire ?
Je ne pense pas que url_for
est nécessaire. De plus, comme le contrôleur est le même, vous pourriez utiliser form_for @user, :url => :action => 'myaction'
La réponse ci-dessus a été utile mais j'ai dû la modifier un peu car sinon le POST routait toujours vers l'action editer autrement : <%= form_for(@user, url : {action : "myaction"}, method : :post) do |user_form| %>. Veuillez noter que ceci est pour un fichier de vue dans le dossier views/users/.
Cela fonctionne. Vérifiez dans les documents officiels en recherchant action:
( côlon actif ) api.rubyonrails.org/classes/ActionView/Helpers/
Hmm, je ne suis pas sûr. J'ai mis form_for @user, url: {action: 'myaction'}
mais ça me donne No route matches {:action=>"myaction", :controller=>"users"}
erreur.
Si vous voulez passer un contrôleur personnalisé à un form_for pendant le rendu d'un formulaire partiel, vous pouvez utiliser ceci :
<%= render 'form', :locals => {:controller => 'my_controller', :action => 'my_action'}%>
et ensuite dans le formulaire partiel utiliser cette variable locale comme ceci :
<%= form_for(:post, :url => url_for(:controller => locals[:controller], :action => locals[:action]), html: {class: ""} ) do |f| -%>
Il est également possible de les joindre en utilisant form_tag
avec la syntaxe :
form_tag({controller: "people", action: "search"}, method: "get", class: "nifty_form")
# => '<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">'
Comme décrit dans http://guides.rubyonrails.org/form_helpers.html#multiple-hashes-in-form-helper-calls
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.