我已经构建了一个Ruby on Rails(2.3.8)应用程序,允许用户跟踪他们的锻炼。此外,如果用户是健身房所有者,他们可以在我的应用程序中创建一个健身房(在我的情况下称为Box)。一个框将网站范围的活动过滤到该框的成员(通过成员资格关联完成,但这对此并不重要)。
Box住在Boxes资源中,可以在我的应用程序/ box / 14中访问,如您所料。我现在想要为理想情况下住在leaderboard
的每个框创建一个/boxes/14/leaderboard
,并且只显示框14中的活动(当然14是一个示例数字)。排行榜不需要是完整的资源,因为我只是通过named_scopes过滤活动。
出于某种原因,我之前没有遇到过这样的情况。在框架内实现这一目标的最佳方法是什么?我已经尝试在boxes_controller
中创建一个方法并将路由映射到/boxes/leaderboard
,但当然这样可以找到一个id = leaderboard的Box。
有什么想法吗?或者我错过了一些基本的东西。
答案 0 :(得分:1)
我认为最简单的方法是为此方案添加成员路由。在您的routes.rb中添加类似的内容:
map.resources :boxes, :member => { :leaderboard => :get }
这将导致另外一条路线如下:
leaderboard_box GET /boxes/:id/leaderboard {:controller=>"boxes", :action=>"leaderboard"}
这将被路由到BoxesController中名为排行榜的动作。