我正在使用Backbone.js编写Rails应用程序。
在Rails中,我在config/routes.rb
中有一个路由,它采用这样的参数:/api/u/foo
。它通过参数获取所有帖子,在本例中为foo
。这个的输出是foo的所有帖子。 Foo是一个用户,有很多帖子。
在Backbone中,我需要在集合上设置url
属性以从路径中获取参数,如下所示:/u/foo
。我希望得到/api/u/foo.json
。我怎么能这样做?我尝试在Backbone路由上使用user
参数,但我无法将其收录到集合中。
routes.rb
文件的相关部分:
scope 'api' do
get "/u/:user", :action => "index", :controller => "posts"
end
答案 0 :(得分:0)
假设foo
是您的参数,只有Backbone才能应用该网址来获取单个用户,而不是集合。
我相信您的路线已经很好,/api/u
应该返回集合,而/api/u/123
是单个用户。您想要的是将额外参数发送到/api/u?foo=bar
以过滤您的收藏。
只需在Backbone中的.fetch()调用中发送它们即可使其正常工作。在控制器中应用必要的更改,以根据可能的各种参数进行过滤。
知道你想要每个用户的帖子,你的问题实际上必须做嵌套路由。这里已经有人问过: Backbone and Rails Nested Routes
Backbone.js上的文档位于:http://documentcloud.github.com/backbone/#FAQ-nested
为了保持更多 restful ,我会将路线定义为:
scope '/api' do
resources :users, only: [], path: 'u' do
resources :posts, only: :index
end
end
结果是:
api_user_posts GET /api/u/:user_id/posts(.:format)api / posts #index