2010-11-05 3 views
10

Me gustaría agregar un parámetro a cada URL en mi aplicación Rails 2.3.10. Jugué con el default_url_options pero quiero que el parámetro sea visible en la URL. Algo así como:Los raíles agregan el parámetro a cada URL en la aplicación

http://<server>/posts?token=XYZ 

Estoy construyendo un sistema de seguimiento affilate y quiero a la gente a compartir el enlace para poder realizar un seguimiento es quién enlace más tarde fue utilizado cuando alguien hace clic en él (para dar puntos a la persona que compartió el enlazar). ¿Alguna sugerencia de cómo puedo agregar un parámetro visible en cada URL usada en la aplicación?

Gracias!

Respuesta

5

reescritura url_for

module ActionView::Helpers::UrlHelper 
    def url_for options 
    options.merge! {:token => generate_token} 
    super 
    end 
end 

o simplemente añadir esto a su archivo application.rb

config.default_url_options += {:token => proc{generate_token}} 
+0

Fui por default_url_options en el application_controller.rb ya que su primera solución no parece funcionar para mí (el método de fusión no existe para una matriz y aparentemente args es una matriz). ¡Gracias por la ayuda! – Cimm

+0

Vaya, mi mal. Supongo que lo arreglé ahora. – edgerunner

0

me gustaría utilizar los usuarios de inicio de sesión o generar un token que se almacenan como un campo en la tabla de usuario a continuación, añadir que a la url como tan:

post_path(@post, :token => user.token) 

Si desea que el símbolo sea única para el cargo de manera similar a continuación, incluir una ficha mensaje:

#post.rb 
def generate_token user 
    "#{self.token}-#{user.token}" 

#view 
post_path(@post, :token => post.generate_token) 
+1

Gracias por la respuesta de Mark, pero el testigo que tengo, ese no es el problema. Mi pregunta era acerca de agregar el token a cada URL y no tener que pasar el token param cada vez que se muestra. – Cimm

2

definen default_url_options en ApplicationController (o el controlador relevante)

def default_url_options 
    {subdomain: 'www'} 
end 
Cuestiones relacionadas