2010-11-05 43 views
10

我想在我的Rails 2.3.10應用程序中爲每個 URL添加一個參數。我玩default_url_options,但我希望參數在URL中可見。喜歡的東西:Rails爲應用程序中的每個URL添加參數

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

我建立一個affilate跟蹤系統,我希望人們分享的鏈接,並能夠追蹤誰的鏈接後來被用來當有人點擊它(給分給誰共享的傢伙鏈接)。任何提示如何在中添加一個可見參數,每個在應用程序中使用的URL?

謝謝!

回答

5

重寫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}} 
+0

我去了application_controller.rb中的default_url_options,因爲你的第一個解決方案似乎不適合我(數組的merge方法不存在,顯然args是一個數組)。謝謝您的幫助! – Cimm 2010-11-05 14:44:45

+0

哎呀,我的壞。我想我現在修好了。 – edgerunner 2010-11-05 15:17:17

0

我會使用用戶登錄,或生成您存儲在用戶表中的字段的令牌,然後添加到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) 
+1

感謝您的答覆馬克,但令牌我有,這不是問題。我的問題是關於將標記添加到每個URL,而不必像每次顯示時那樣傳遞標記參數。 – Cimm 2010-11-05 13:21:08

2

定義ApplicationController中(或相關的控制器)default_url_options

def default_url_options 
    {subdomain: 'www'} 
end 
相關問題