2011-12-23 15 views
5

En mi página Mostrar usuario, quiero agregar un enlace a un sitio web externo con algunos valores guardados en la tabla pasada como parámetros.¿Cómo agrego parámetros a un link_to URL externo?

Obtuve la primera parte funcionando bien, eso es simple.

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

Pero también quiero pasar algunos parametros que se guardan en la base de datos, como @user.email, @user.first_name, etc.

Así que básicamente el enlace final se verá así:

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

¿Cuál sería la mejor manera de hacerlo?

Respuesta

1

Porque los rieles no saben cómo el sitio web quiere sus paramteres, creo que debes hacerlo con la concatenación de cadenas. Al menos, puedes escribirle un ayudante para que haga esto por ti, pero al final se convertirá en una concatenación de cadenas.

+0

Me di cuenta de cómo hacerlo yo mismo, menos de 10 minutos después jaja .. Gracias de todos modos. – cdotfeli

+1

No hay problema, ¿qué método usaste? Escriba su respuesta aquí y márquela como correcta en 2 días para que pueda ser utilizada como referencia para futuros desarrolladores –

+2

Sí, estaba planeando hacer eso :) Simplemente fui con '<% = link_to" Outside Site ", ('http : //outsidesite.com? email = '+ @ user.email+' &firstname='[email protected])%> 'y agregando todo lo que necesito. No me estoy perdiendo nada, ¿verdad? – cdotfeli

4

Este es un enfoque válido:

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

Sólo asegúrese de escapar de las variables que estás poniendo en la URL:

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

Gracias. Encontré una manera de hacerlo sin tener que escapar de las variables. – cdotfeli

0

seguirlo

# 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

Puedes escribir el método de ayuda como url patern. Puede comprobar el código de abajo:

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

Después de eso, se puede llamar al método de ayuda como:

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

espero que encuentre útil.

Cuestiones relacionadas