如何在Rails中定义每个用户路由?

时间:2012-12-04 03:14:25

标签: ruby-on-rails ruby-on-rails-3

我想在Rails中创建每个用户的视图,并试图找出在routes.rb中定义它们的最佳方法。假设我想要以下类型的路径名:

/users/1/event_list_view
/users/1/event_map_view
/users/1/aggregated_event_view

因此'/ users / 1 /'之后的端点不是资源,它只是控制器中的另一个端点:

class UsersController < ApplicationController
  def event_list_view
  end

  def event_map_view
  end

  def aggregated_event_view
  end
end

我尝试了一些不同的东西,目前有以下内容,但似乎无法让它起作用:

  resources :users do
      match '/users/:id/event_list_view' => {:action=>"event_list_view", :controller=>"users"}
      match '/users/:id/event_map_view' => {:action=>"event_map_view", :controller=>"users"}
      match '/users/:id/aggregated_event_view' => {:action=>"aggregated_event_view", :controller=>"users"}
  end

让我知道我做错了什么。谢谢!

1 个答案:

答案 0 :(得分:2)

Member routes应该允许你做你想做的事情:

resources :users do
  member do
    get 'event_list_view'
    get 'event_map_view' 
    get 'aggregated_event_view' 
  end
end

我不确定你究竟想做什么,但也可能值得考虑其他资源安排。如果您尝试显示与用户关联的所有事件,那么为Event资源(等等)定义索引路由并在那里传递用户参数可能更有意义。