我没有使用
Ruby on Rails获得REST,我希望有人可以帮助我.
想象一下,我正在构建一个跟踪窗口小部件和拥有这些窗口小部件的用户的网站.所以我有一个UsersController和一个WidgetsController,我可以获得一个包含索引操作的Widgets或Users列表:
GET /users GET /widgets
GET /users/id GET /widgets/id
我明白了.
我感到困惑的是,我将使用RESTful请求来检索属于特定用户的小部件列表?这是发送到UsersController或WidgetsController的请求吗?它使用了7种RESTful操作中的哪一种?
是我创建自定义操作的情况之一吗?我的印象是自定义操作应该很少见,但这似乎是一个非常常见的用例.
谢谢!
解决方法
属于用户foo的小部件列表的URL如下所示:
/users/foo/widgets
然后,您可以选择如何为每个小部件执行URL.这个有可能:
/users/foo/widgets/bar
但我更喜欢这个:
/widgets/bar
您的路线如下所示:
map.resources :users,:has_many => :widgets,:shallow => true map.resources :widgets,:has_many => :users,:shallow => true
(这是来自记忆,我可能搞砸了一个或多个细节)
处理/ user / foo / widgets的控制器方法是WidgetController的索引操作.它测试user_id参数是否存在,并根据该参数限制返回的小部件. (或者检索foo用户并将@widgets设置为@ user.widgets.)
更新:有一个很好的概述嵌套路由,它回答了我在Rails Guides中的原始问题.
更新2哦是的,我的意思是链接到一些documentation.