0
我有以下兩種途徑在我的Rails應用程序:的Rails在包含路由約束動態段
match '/users/:username' => 'users#show', :via => :get, :as => :user
match '/users(/:filter)' => 'users#index', :via => :get, :as => :users
這是爲了讓我能有這樣的路線:
/users/cameron
/users/popular
第一個是用戶,第二個是過濾器。
但是Rails中的路由將始終選擇第一條路由,因爲它不知道:username
和:filter
之間的區別。
對於帖子中,我避免這個問題做:
match '/posts/:id' => 'posts#show', :via => :get, :as => :post, :id => /[0-9]/
但是這隻能是因爲職位總是整數。例如:/posts/21
如何將約束應用於我的用戶路由,以便它們不會彼此絆倒,也不必爲其中的任何一個添加前綴。
爲什麼沒有在網址中的查詢字符串,而不是(即'users?filter = popular') –
@MarioPérez簡短的回答是...我不想:) – Cameron
也許然後使用一些約束,檢查字符串是否是一個用戶名或不http:///guides.rubyonrails.org/routing.h tml#advanced-constraints,這樣你就可以選擇合適的路線。但是查詢數據庫對於性能來說並不合適。如果這是你唯一的選擇¡\\ _(ツ)_ /¯ –