0

Backbone.js を使用して Rails アプリを作成しています。

config/routes.rbRails には、次のような引数を取るroute inがあります/api/u/foo。この場合、引数によってすべての投稿を取得しますfoo。これの出力は、foo によるすべての投稿です。Foo は多くの投稿を持つユーザーです。

Backbone では、次urlのようにコレクションに属性を設定して、ルートから引数を取得する必要があります/u/foo。私はそれを手に入れたい/api/u/foo.json。どうすればこれを行うことができますか? userバックボーンルートで引数を取ろうとしたのですが、コレクションにたどり着けませんでした。

routes.rbファイルの関連部分:

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

1 に答える 1

0

がパラメータであると仮定するfooと、バックボーンがその URL を適用して、コレクションではなく単一のユーザーをフェッチすることは理にかなっています。

/api/uコレクションと/api/u/123単一のユーザーを返す必要があるルートは、すでに問題ないと思います。/api/u?foo=bar必要なのは、コレクションをフィルタリングするために追加のパラメーターを送信することです。

バックボーンの .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 に答える