2009-10-12 40 views
10

Esto funciona muy bien:Rieles: Pasar varios parámetros a form_for url?

- form_for @user, :url => { :action => :create, :type => @type } do |f| ... 

devoluciones /users/(id)?type=type

Pero en otra vista que necesito para pasar dos parámetros en la cadena de URL, y esto no funciona:

- form_for @user, :url => { :action => :update, :type => @type, :this => @currently_editing } do |f| ... 

devoluciones /users/(id)?this=currently_editing

También he intentado:

- form_for @user, :url => { :action => :update, :params = params.merge({:this => @currently_editing, :type = @type})} do |f| ... 

... sin suerte (error: solo se permiten solicitudes GET).

Lo que yo quiero es que vuelva esto: /users/(id)?this=currently_editing&type=type

Pensamientos?

Respuesta

25

¿Por qué necesita pasarlos a la cadena de URL? ¿Por qué no simplemente agregarlos como campos ocultos en el formulario? En casi todos los casos, debe pasar las variables de esa manera con los POST.

+0

¿Los campos ocultos funcionan para parámetros que no forman parte del modelo de publicación? – Blake

+0

Aún puede agregar los campos ocultos al formulario, no tiene que usar form_for helpers para él. – scottd

-3

Yo creo que hay que mover los atributos de la cadena de consulta deseada fuera de la opción: URL como esta:

form_for @user, :url => { :action => :update }, :type => @type, :this => @currently_editing do |f| 
+0

No. No funciona así. – Jim

+3

Correcto ... no funciona así. – rswolff

1

me gustaría utilizar campos ocultos, pero esto debería funcionar:

<% form_for @user, :url => user_path(@user.id, :type => @type, :this => @currently_editing), :method => :put do |f| -%> 

:method => :put disparadores la acción de actualización cuando se usan rutas RESTful.

0

favor intenta este

puede pasar más de un parámetro de esta manera.

- form_for @user, :url => xxx_yyy_path(:param1 => value1, :params2 => value2, ......) do |f| ... 
Cuestiones relacionadas