2015-10-20 73 views
0

我有一些正在工作的代碼現在好像被破解了,我正試圖尋找原因。這個問題似乎集中在我的推薦系統上。如何在重定向之前訪問rails中URL的ref部分?

一旦用戶註冊,他們會得到一個唯一的推薦代碼,即http://localhost:3000/?ref=b9270b78a6(來自我的本地機器)。理論上講,他們可以將其傳遞給他們的朋友,當他們的朋友通過他們的推薦網址來到網站時,我會記錄參考並通過+1推薦信用於初始用戶。

當它工作時,URL進來了,程序爲「/?ref = b9270b78a6」發出一個GET命令,並被重定向到'/ frontpage',但ref被存儲爲params [:ref]。現在params [:ref]是空白的,基本上讓我的程序說沒有人提到其他人。

看來我已經無意間刪除了一些重要的東西,但我不知道是什麼。

我的問題是,a)我不知道如何捕獲'b92​​70b78a6'作爲prams [:ref],並且最重要的是,我似乎失去了將它作爲重定向點的機會瀏覽器的通用網址,並執行「S​​taticPagesController#頭版」控制器動作之前,我可以搶反正代碼:

Started GET "/?ref=b9270b78a6" for ::1 at 2015-10-20 16:19:36 -0400 
Started GET "/frontpage" for ::1 at 2015-10-20 16:19:36 -0400 
Processing by StaticPagesController#frontpage as HTML 

總之:我如何抓住裁判的代碼並將其保存爲PARAMS [任何想法:參考]?

我甚至不知道你可能需要看到什麼代碼(控制器,模型,視圖)才能看到底部,所以很高興用任何可能有用的方法進行更新。在黑暗中,我最接近的刺傷是我需要使用URI :: parse(url)來解析傳入的URL,但是再次 - 我可能會這樣做,它已被重定向,我不能。

任何想法都非常感謝!

+1

我沒有在日誌中看到重定向消息。路線中的重定向將執行此操作。 – Swards

+0

「將它保存爲params [:ref]'是什麼意思?你總是希望它出現在那裏? – BroiSatse

+0

@Swards ...我想這是一個很好的觀點。在我瘋狂地解決這個問題時,我沒有考慮到這一點。任何想法可能意味着什麼?這就好像現有的路由已經定義了,它將它從?ref = b9270b78a6發送到/ frontpage。但是在看過之後(爲了安全起見),我什麼都看不到! – DanielNordby

回答

0

虛驚一場...這是我的路線。到底什麼......我在8周內沒有改變過,他們突然間突然斷了。更何況這是最無害的小路線。這絕對沒有理由發生,但幸福的Rails,它的確如此。

感謝@Swards的幫助和學習體驗!

2

很高興你找到了原因。用通常的調試方法很難發現其中的一些錯誤。

順便說一句 - 另一個提示。在會話中拋出ref - 您可以在應用程序控制器中使用before操作執行此操作,然後在需要時可以使用ref值。

# application_controller.rb 
before_action :set_ref 

def set_ref 
    session[:ref] ||= params[:ref] if params[:ref] 
end 

後來的後來,你可以得到它,當你保存

referring_user_id = session[:ref] 
+0

謝謝!我已經在更多的環顧四周之後看到了這種方法,並且已經實現了,現在我知道我可以和我的實際問題是什麼。再次感謝! – DanielNordby