2011-12-23 12 views
5

Nella mia pagina Mostra utente, voglio aggiungere un collegamento a un sito Web esterno con alcuni valori salvati nella tabella passati come parametri.Come si aggiungono parametri a un link all'URL esterno?

Ho ottenuto che la prima parte funzioni correttamente, è semplice.

<%= link_to "Outside Site", "http://outsidesite.com/create" %> 

Ma voglio anche passare alcuni paramaters che vengono salvati nel database, come @user.email, @user.first_name, ecc

Quindi, in pratica il link finale sarà simile:

http://outsidesite.com/[email protected]&firstname=userfirstname etc etc.

Quale sarebbe il modo migliore per farlo?

risposta

1

Poiché le rotaie non sanno in che modo il sito Web desidera i suoi parametri, penso che sia necessario farlo con la concatenazione delle stringhe. Almeno, puoi scrivere un helper per farlo, ma alla fine diventerai una concatenazione di stringhe.

+0

Ho capito come farlo da solo, meno di 10 minuti dopo haha ​​.. Grazie comunque. – cdotfeli

+1

Nessun problema, quale metodo hai usato? Scrivi la tua risposta qui e contrassegnala come corretta in 2 giorni in modo che possa essere utilizzata come riferimento per i futuri sviluppatori –

+2

Sì, stavo programmando di farlo :) Sono andato con '<% = link_to" Sito esterno ", ('http : //outsidesite.com? email = '+ @ user.email+'&firstname='[email protected])%> 'e aggiunge qualsiasi altra cosa di cui ho bisogno. Non mi manca niente, vero? – cdotfeli

4

Questo è un valido approccio:

<% = link_to "Outside Site", 
"http://outsidesite.com/create?email=#{@user.email}" %> 

Basta fare in modo a fuggire le variabili che si sta mettendo in URL:

require 'uri' 
escaped_email = URI.escape(@user.email) 
+0

Grazie. Ho trovato un modo per farlo senza dover sfuggire alle variabili. – cdotfeli

0

dare una prova

# routes.rb 
get 'create?:query' => 'users#create', :as => :create_users_with_query 

# models/user.rb 
class User < ActiveRecord::Base 
    def to_params 
    "email=#{self.email}&firstname=#{self.firstname}" 
    end 
end 

# view 
<%= link_to "Outside Site", create_users_with_query(@user) %> 
4

Puoi scrivere il metodo helper come url patern. È possibile controllare il codice sotto:

def generate_url(url, params = {}) 
    uri = URI(url) 
    uri.query = params.to_query 
    uri.to_s 
    end 

Dopo di che, è possibile chiamare il metodo di supporto come:

generate_url("YOUR-URL-ADDR-HERE", :param1 => "first", :param2 => "second") 

Spero che hai trovato utile.

Problemi correlati