我想在我的Rails 2.3.10應用程序中爲每個 URL添加一個參數。我玩default_url_options
,但我希望參數在URL中可見。喜歡的東西:Rails爲應用程序中的每個URL添加參數
http://<server>/posts?token=XYZ
我建立一個affilate跟蹤系統,我希望人們分享的鏈接,並能夠追蹤誰的鏈接後來被用來當有人點擊它(給分給誰共享的傢伙鏈接)。任何提示如何在中添加一個可見參數,每個在應用程序中使用的URL?
謝謝!
我想在我的Rails 2.3.10應用程序中爲每個 URL添加一個參數。我玩default_url_options
,但我希望參數在URL中可見。喜歡的東西:Rails爲應用程序中的每個URL添加參數
http://<server>/posts?token=XYZ
我建立一個affilate跟蹤系統,我希望人們分享的鏈接,並能夠追蹤誰的鏈接後來被用來當有人點擊它(給分給誰共享的傢伙鏈接)。任何提示如何在中添加一個可見參數,每個在應用程序中使用的URL?
謝謝!
重寫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}}
我會使用用戶登錄,或生成您存儲在用戶表中的字段的令牌,然後添加到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)
感謝您的答覆馬克,但令牌我有,這不是問題。我的問題是關於將標記添加到每個URL,而不必像每次顯示時那樣傳遞標記參數。 – Cimm 2010-11-05 13:21:08
定義ApplicationController中(或相關的控制器)default_url_options
def default_url_options
{subdomain: 'www'}
end
我去了application_controller.rb中的default_url_options,因爲你的第一個解決方案似乎不適合我(數組的merge方法不存在,顯然args是一個數組)。謝謝您的幫助! – Cimm 2010-11-05 14:44:45
哎呀,我的壞。我想我現在修好了。 – edgerunner 2010-11-05 15:17:17