2011-10-05 5 views
5

私はbackbone.jsで新しくなっています。私はbelongs_toリレーションを持つコレクションを取得するのに苦労しています。backbone.jsでbelongs_toリレーションを処理する

私はユーザ(ユーザ/ GET)のリストを取得したいと思いますが、それらをすべてbelongs_to関連付けで表示したいと思います。

たとえば、ユーザーの会社名を表示する。誰かが解決策を知っていますか?私はCouchDBの

ユーザーコントローラとRailsの3にルビーを使用しています

def index 
    User.all 
end 

バックボーンコレクション

class UserCollection extends Backbone.Collection 

    url: -> 
    app.routes.users_url 

    model: User 

バックボーンモデル

class User extends Backbone.Model 

    idAttribute: '_id' 

    defaults: { 
    "email": null 
    "mobile": null 
    "loc": null 
    } 

    url: -> 
    app.routes.users_url + '/' + (@id || '') 

私が表示したいと思いcomこのようなパニィ名...

%script{:id => "user-resource-template", :type => "text/template"} 
    %td= check_box_tag "select", 1, false, :class => "checkbox", "data-id" => raw("<%= _id %>") 
    %td <%= name %> 
    %td <%= email %> 
    %td <%= company.name %> 
+0

どうして正しく動作しないのですか? –

+0

まあ、関係isntの仕事に属しています。これは、モデルが関係の何も持っていないので、ofcourseの論理です。だから私はcompany.nameを印刷する方法を知りません –

答えて

4

BACKBONE.JSはofficial documentationにおけるそれらの言及がないよう、関係をサポートしていないようです。

すべては失われませんが、Backbone-relationalligament.jsなど、リレーションシップのサポートを追加するバックボーンプラグインがあります。私はそれらをテストしていませんが、バックボーン・リレーショナルはかなりアクティブなようです。レイジーロード・コレクションに

更新

、もう1つはBackbone.RelationalModelfetchRelated方法を参照して、関係ごとにフェッチ防ぐ:

は、モデルの 属性で参照されたサーバーからモデルを取得します、まだ発見されていない/作成されていません。特に、遅延読み込みシナリオでは を使用できます。

デフォルトでは、サーバからフェッチされる追加のモデル ごとに個別のリクエストが発生します。ただし、サーバ/ API がサポートしている場合は、 によってfetchRelatedと呼ばれるリレーションのcollectionTypeを指定することで、1回のリクエストでモデルのセットを取得できます。 collectionTypeには、 url(models)メソッドがオーバーライドされ、モデルの配列に対してURL を構築できるようにする必要があります。例として、上部の例を Backbone.Relation optionsまたはBackbone-tastypieにしてください。

+0

はいいいですが、それは私がコレクションのすべての行の要求を行う必要があることを意味します。これは、通常のユーザーのインデックス操作に対する要求を意味します。 –

+0

私の答えを更新しました、これはあなたが探しているものですか? –

+0

ありがとうございます。これは正に正しい答えです。私は別の方法は、サーバーとのいくつかの理由でそれを行うつもりですが、これは正しい答えです。ありがとう! –

関連する問題