Quiero tener form_for @user
, pero publicar en una acción personalizada en el controlador de usuario.form_for pero para publicar en una acción diferente
¿Cómo puedo hacer esto?
Quiero tener form_for @user
, pero publicar en una acción personalizada en el controlador de usuario.form_for pero para publicar en una acción diferente
¿Cómo puedo hacer esto?
form_for @user, :url => url_for(:controller => 'mycontroller', :action => 'myaction')
o
form_for @user, :url => whatever_path
Los siguientes obras para mí:
form_for @user, :url => {:action => "YourActionName"}
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
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
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.
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| -%>
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
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. –
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
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