2013-10-18 38 views
0

但是,我希望用戶能夠進入matchups /:id/show,但是隻有當他們使用網站的內置搜索功能搜索匹配時,而不是當他們直接在導航欄中輸入網址時。搜索功能使用一個控制器動作來查找他們正在尋找的匹配,並且redirects_to到匹配的顯示頁面。讓用戶在特定條件下導航到/顯示頁面

之所以這樣做,是因爲用戶在網站上投票,每次他們投票時,他們都會得到一筆信貸花費在搜索上。我希望他們能夠搜索比賽,但不能自行導航,因此避免了獲得積分的需要。

眼下,搜索功能找到他們正在尋找的對決,只是做:

redirect_to @matchup 

所以我嘗試在穿上控制器的show方法不起作用一個before_action過濾器,因爲它也阻止了用戶在使用搜索功能時訪問匹配的顯示頁面。

這可能嗎?謝謝!

回答

0

您可以檢查引用者是否完成此操作。當用戶在導航欄中輸入URL時,它將不會有任何引用。

您可以在您的控制器中執行此操作。

if request.referer 
    #came (probably) from search 
else 
    #came by entering url in navigation bar 
end 

然而,這裏request.referer如果將用戶來自任何頁面,而不是搜索頁面存在。如果你想要做的事,只有當他們從搜索頁面來了,你多種選擇,包括:

  • 添加一個cookie
  • 查詢字符串添加到URL,以確定它
  • 提到這頁如果它符合您的可接受模式,您可以檢入request.referer
+0

偉大的建議,謝謝。如果我最終使用了一個,我會試一試並報告。再次感謝 – jackerman09

+0

@ jackerman09好嗎 – HungryCoder

+1

要小心,因爲引用者信息可以被屏蔽或甚至不被瀏覽器返回。該信息在過去被用於(ab),並且數據隱私論證與其可用性可能會使其不可靠。參見http://en.m.wikipedia.org/wiki/HTTP_referer和http://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3 –

相關問題