Ruby on rails 4 Rails-使用自定义路由,而不是传递url参数

Ruby on rails 4 Rails-使用自定义路由,而不是传递url参数,ruby-on-rails-4,routes,rails-routing,Ruby On Rails 4,Routes,Rails Routing,一个用户有多个帐户,并且一个帐户属于某个角色。角色可以是“学生”、“管理员”、“讲师” 要查看讲师,我可以执行以下操作: /accounts?filter_by=instructors # controller role = params[:role] @accounts = Account.joins{role}.where{ role.name.eq(role) } 我想做的是: /instructors 并且,为每种类型的帐户创建一个路由。我正在努力找出创建这些路线

一个用户有多个帐户,并且一个帐户属于某个角色。角色可以是“学生”、“管理员”、“讲师”

要查看讲师,我可以执行以下操作:

  /accounts?filter_by=instructors

  # controller
  role = params[:role]
  @accounts = Account.joins{role}.where{ role.name.eq(role) }
我想做的是:

 /instructors
并且,为每种类型的帐户创建一个路由。我正在努力找出创建这些路线的最佳方法

   resources :accounts do
     collection do
       get "instructors", to: "accounts#index", as: "instructors", default: {filter_by: Role.find_by_name('instructor').id}
    end
  end
在rails 4路线中,我将如何做到这一点?

我猜:

resources :accounts, path: 'instructors', as: 'instructors', filter_by: 'instructors'


成功了。有没有办法把它干掉,或者我需要一个帐户的资源,然后是我想要命名路由的每种类型的帐户的资源?
get "/:filter_by", 
  constraints: { filter_by: /instructors|another_type/ }, 
  to: "accounts#index", 
  as: "accounts"