2010-01-23 15 views
40

¿Cómo puedo tener un enlace en una página que lleva al usuario a otra URL y pasa a lo largo de un parámetro y en la URL de destino cómo podemos recoger ese parámetro.link_para enviar parámetros junto con la url y tomarlos en la página de destino

normalmente añado enlaces como siguiente:

<%= link_to "Add Product", '/pages/product' %> 

Pero, ¿cómo puedo enviar parámetros, junto con esta url? ¿Puedo recoger en la acción de destino por using params[:parm_name]

Respuesta

88

Sólo tiene que añadir al enlace:

<%= link_to "Add Product", '/pages/product?param1=value1&param2=value2' %> 

y en el controlador:

param1 = params[:param1] # "value1" 
param2 = params[:param2] # "value2" 

Si utiliza métodos de ayuda para las rutas (por ejemplo company_path) , entonces puede agregar hash de params, por lo que estos dos deberían ser similares:

<%= link_to "Add Product", new_product_path(:param1 => "value1", :param2 => "value2") %> 
<%= link_to "Add Product", "/products/new?param1=value1&param2=value2" %> 

De documentation:

link_to "Comment wall", profile_path(@profile, :anchor => "wall") 
# => <a href="/profiles/1#wall">Comment wall</a> 

link_to "Ruby on Rails search", :controller => "searches", :query => "ruby on rails" 
# => <a href="/searches?query=ruby+on+rails">Ruby on Rails search</a> 

link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux") 
# => <a href="/searches?foo=bar&amp;baz=quux">Nonsense search</a> 
+0

oh ... pensé que habría una forma más railsy hacerlo – Omnipresent

+0

@Omnipresent hay carriles manera, pero debería utilizar carriles de métodos de ayuda para los trazados/URL , no escriba la dirección a mano – MBO

+1

allí. define: controller,: action y todos los demás params en un solo hash. – Eimantas

0

Aquí está una manera más carriles-y de hacerlo.

<%= link_to 'Link Text', 
{controller: 'controller/name', action: 'action_name', query: params[:query]}, 
method: 'get', 
:class=>'link_styling' %> 

Debe hacer referencia a sus parámetros en el hash que define el enlace. También debe ser un método GET. El estilo es opcional, por supuesto.

Esto realmente debería estar aquí también: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

Cuestiones relacionadas