Rails - 使用自定义路由,而不是传递url params

时间:2014-01-02 01:03:07

标签: 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

并为每种类型的帐户创建路线。我正在努力寻找创造这些路线的最佳方法。

   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路线中执行此操作?

1 个答案:

答案 0 :(得分:1)

我猜这个:

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

get "/:filter_by", 
  constraints: { filter_by: /instructors|another_type/ }, 
  to: "accounts#index", 
  as: "accounts"