2017-05-23 49 views
0

我想知道從購物車控制器從至極url我來:如果我來自'/'或'/搜索'參數是一個意甲模型,如果我來自/'1-9 +'這是一個季節模型,最後/'1-9 +/1-9 +'是章節模型。Rails URI(request.referer).path正則表達式

我見過URI(request.referer).path顯示路徑,但我不知道如何製作該正則表達式。

有什麼簡單的方法知道它來自哪個視圖?我有問題存儲他們,因爲他們是不同的模型,而paremeter是primary_key,所以我不知道什麼模型,我必須搜索該密鑰。

回答

0

一個更好的辦法來區分這些請求將不會使用正則表達式,但在你的routes.rb文件

得到「/」 =>「系列#指數」

GET申報相應的路由'/搜索'=> '系列#搜索'

得到 '/:季節'=> '四季#秀'

得到 '/:季節/:章'=> '章節#秀'

在過去的路線,則params [:季節],而params [:章]將事先設定的URL

+0

這將要求用戶爲每個路線定義單獨的操作。如果用戶想要處理請求的方式對於每種情況都完全不同,則此解決方案將有意義。但是,如果用戶只想將「季節」,「章節」等作爲控制器邏輯中的變量之一,那麼該解決方案將導致代碼重複。 – rohan

0

如果從控制器動作中你想知道請求來自,更好的哪條路線讓rails路由爲你處理正則表達式部分,你可以簡單地在routes.rb本身中添加標識符作爲額外的參數。

get '/' => 'your_controller#your_action', :type => "Series" 
get '/search' => 'your_controller#your_action', :type => "Series" 
get '/:season' => 'your_controller#your_action', :type => "Season" 
get '/:season/:chapter' => 'your_controller#your_action', :type => "Chapter" 

標識將在您的控制器行動PARAMS可用[:類型]在這種情況下

另外,作爲一個很好的做法,從來沒有與變量開始你的路線。總是命名空間。否則,他們將開始與任何其他路線匹配。例如對於例如 使用get 'some_namespace/:season'而不是get '/:season'

+0

問題在於/// search /:season,/:season /:章節重定向到'/ addproduct'以添加產品,並且:type在此處不可用。 – Lechucico

+0

爲實際定義路線添加了一個編輯,即使您希望使用類似GET'/:variable'的路線,將其放置在routes.rb文件的底部,因爲路線是從上到下匹配的。 – rohan

+0

:type只是您可以使用的變量名稱的示例。你可以給它任何你想要的其他變量名稱。 – rohan