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,这样你就可以选择合适的路线。但是查询数据库对于性能来说并不合适。如果这是你唯一的选择¡\\ _(ツ)_ /¯ –