具有动态参数的Backbone Collection url

时间:2013-02-17 18:18:57

标签: javascript ruby-on-rails backbone.js

我正在使用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

1 个答案:

答案 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