2010-01-23 5 views
40

Come posso avere un collegamento su una pagina che porta l'utente a un altro URL e passa lungo un parametro e sull'URL di destinazione come possiamo prendere quel parametro.link_per inviare parametri con l'url e prenderli sulla pagina di destinazione

di solito mi aggiungere link come segue:

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

Ma come posso inviare i parametri con questo URL? Posso raccoglierli nell'azione bersaglio using params[:parm_name]

risposta

88

Basta aggiungere al link:

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

e controller:

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

Se si utilizzano metodi di supporto per i percorsi (ad esempio company_path) , quindi è possibile aggiungere hash di parametri, quindi questi due devono essere simili:

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

Da 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 ... ho pensato che ci sarebbe un modo più railsy per farlo – Omnipresent

+0

@Omnipresent c'è modo delle rotaie, ma si dovrebbe usare rotaie metodi di supporto per percorsi/URL , non digitare l'indirizzo a mano – MBO

+1

c'è. define: controller,: action e tutti gli altri parametri in un singolo hash. – Eimantas

0

Ecco un rotaie-y modo più di farlo.

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

È necessario fare riferimento ai parametri nell'hash che definisce il collegamento. Deve anche essere un metodo GET. Lo styling è ovviamente facoltativo.

Questo in realtà dovrebbe essere anche qui: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

Problemi correlati