0

我正在用 Backbone.js 编写一个 Rails 应用程序。

在 Rails 中,我有一个路由,config/routes.rb它接受这样的参数:/api/u/foo. 它通过参数获取所有帖子,在这种情况下foo。这个的输出是 foo 的所有帖子。Foo 是一个用户,他有很多帖子。

在 Backbone 中,我需要在集合上设置url属性以从路由中获取参数,如下所示/u/foo:我想要那个去得到/api/u/foo.json。我怎么能这样做?我尝试user在 Backbone 路由上进行争论,但我无法将它放到集合中。

文件的相关部分routes.rb

scope 'api' do
  get "/u/:user", :action => "index", :controller => "posts"
end
4

1 回答 1

0

假设foo是您的参数,那么 Backbone 将应用该 URL 来获取单个用户而不是集合才有意义。

我相信您的路线已经很好,/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

为了保持更安静,我会这样定义路线:

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

于 2013-02-17T18:34:25.167 回答