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)