Rails добавляет параметр в каждый URL-адрес приложения

Я хотел бы добавить параметр в каждый URL-адрес в приложении Rails 2.3.10. Я играл с default_url_options, но я хочу, чтобы параметр был видимым в URL-адресе. Что-то вроде:

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

Я создаю аффилированную систему отслеживания, и я хочу, чтобы люди делились ссылкой и могли отслеживать, какая ссылка была использована позже, когда кто-то нажимает на нее (чтобы указать на парня, который поделился ссылкой). Любые подсказки, как я могу добавить видимый параметр в каждый URL-адрес, используемый в приложении?

Спасибо!

Ответ 1

Переписать url_for

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

или просто добавьте это в свой application.rb файл

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

Ответ 2

определить default_url_options в ApplicationController (или соответствующем контроллере)

def default_url_options
  {subdomain: 'www'}
end

Ответ 3

Я бы использовал логин пользователей или сгенерировал токен, который вы храните как поле в таблице пользователя, затем добавьте это к URL-адресу так:

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

Если вы хотите, чтобы токен был уникальным для сообщения, аналогичным образом добавьте маркер сообщения:

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

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