2013-06-26 35 views
0

我有一個資源路線軌道3在資源航線附加參數約束

resources :favorites 

但我w'd想有一個請求作爲

/favorites?sort_by=name 
/favorites?sort_by=date 
/favorites?sort_by=number 

如何限制一個只使用名,日期,請求中的數字

我已經試過

resources :favorites, :constraints => {:sort_by => /name|date|number/} 

,但它不工作。

在此先感謝。

+0

我用'/(name)|(date)|(number)/' – StupidDev

回答

0

路由約束不會對查詢字符串進行測試。

在sort_by上創建自定義路線,並使其成爲路線的一部分。或者在控制器中約束它。

1

在routes.rb中發生以下代碼

resources :favorites do 
member do 
    get :sort_by, constraints: {id: /name|date|number/} 
end 
end 

就會產生

sort_by_favorite GET /favorites/:id/sort_by(.:format)     favorites#sort_by {:id=>/name|date|number/} 
在 「/收藏/:ID/sort_by」

URL,到位的:ID你可以通過'姓名'或'日期'或'號碼'。但我想,這不是你想要的。

所以,如果你想通過以下網址

/favorites?sort_by=name 
/favorites?sort_by=date 
/favorites?sort_by=number 

然後,你必須寫在收藏控制器的索引行爲的一些條件。

def index 
if ['name', 'date', 'number'].include?(params['sort_by']) 
    # your code goes here 
else 
    # redirect to some where with error message 
end 
end 

希望它會爲你工作:)