2011-05-06 23 views
7

¿Es posible enviar otro parámetro fuera de los datos del formulario en rieles? Mi problema es que renderizo diferentes formularios para diferentes clases y los envío al mismo método de creación. Me gustaría enviar la clase con el formulario (como valor no como clave en el hash). Algo así como el : parámetro de tipo (que en realidad no funciona)Parámetro adicional en form_for in Rails

<%= form_for(@an_object, :url => { :controller => :a_controller, :action => :create }, 
    :type => @an_object.class.to_s.underscore) do |f| %> 

El mensaje posterior que parece:

{"commit"=>"Create Class of an Object", 
"authenticity_token"=>"/iqu0A8/AocDT3HyjL5/+bKZiLkyr4FE71u/mc8Wx0Y=", 
"utf8"=>"✓", 
"class_of_an_object"=>{"name"=>"a name", 
"description"=>"a description"}} 

y yo tendría un "type" => "class_of_an_object", sino directamente en el hash no dentro de una el hash "class_of_an_object".

+0

¿Quieres el parámetro enviado en la dirección URL como un parámetro GET o en el cuerpo como un parámetro POST? –

Respuesta

13
<%= form_for @an_object, 
      :url => { :controller => :a_controller, 
         :action => :create, 
         :type => @an_object.class.to_s.underscore } do |f| %> 

Y yo prefiero usar rutas con nombre

<%= form_for @object, :url => object_path(@object, :type => "whtever"), :html => {:method => :post} do |f| %> 
4

Esto funciona para mí:

<%= form_for @foo, :url => foo_path(:type => "whatever"), :html => {:method => :post} do |f| %>