2011-03-16 18 views

Respuesta

159
form_for @user, :url => url_for(:controller => 'mycontroller', :action => 'myaction') 

o

form_for @user, :url => whatever_path 
+15

No creo que sea necesario 'url_for'. Además, como el controlador es el mismo, podría usar 'form_for @user,: url =>: action => 'myaction'' – rubyprince

+1

La respuesta anterior fue útil, pero tuve que modificarla un poco, ya que de lo contrario el POST siempre estaba enrutando a la edición acción del controlador de lo contrario: <% = form_for (@user, url: {action: "myaction"}, method:: post) do | user_form | %>. Tenga en cuenta que esto es para un archivo de vista dentro de la carpeta views/users /. – AarCee

36

Los siguientes obras para mí:

form_for @user, :url => {:action => "YourActionName"} 
+1

Esto funciona. Compruébelo en los documentos oficiales buscando 'action:' (* action colon *) http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for – user664833

+2

Hmm no estoy seguro. He puesto 'form_for @user, url: {action: 'myaction'}' pero me da el error 'No route matches {: action =>" myaction ",: controller =>" users "}' error. – lulalala

9

he hecho así

<%= form_for :user, url: {action: "update", params: {id: @user.id}} do |f| %> 

Nota opcional conjunto de parámetros id a instancia de usuario id attr ibute.

3

Si desea pasar controlador personalizado a un form_for la vez que resulta una forma parcial puede utilizar esto:

<%= render 'form', :locals => {:controller => 'my_controller', :action => 'my_action'}%> 

y luego en el uso parcial formulario de esta variable local de la siguiente manera:

<%= form_for(:post, :url => url_for(:controller => locals[:controller], :action => locals[:action]), html: {class: ""}) do |f| -%> 
3

Alternativamente, el mismo puede ser alcanzado usando form_tag con la sintaxis:

form_tag({controller: "people", action: "search"}, method: "get", class: "nifty_form") 
# => '<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">' 

Como se describe en http://guides.rubyonrails.org/form_helpers.html#multiple-hashes-in-form-helper-calls

+0

Esto es cierto, pero la pregunta se refiere a un objeto en particular, en este caso '@ usuario'. El uso de un 'form_tag' no vinculará los atributos del objeto a los campos del formulario. –

Cuestiones relacionadas