2012-04-12 7 views
2

私はRails 3.1とBackbone.jsを使ってアプリケーションを作成しています。 (Railsコントローラを介して)データベースから取り出されたモデルのコレクションを使って作業していますが、データベースのすべての属性をjavascriptに取得しています。しかし、別のモデルで同じことをする同じメソッドとコードで、私は2番目のモデルのデータベース 'id'を取得していません。下記はありませんRailsとBackbone.jsの間でデータベースIDが渡されない

respond_to :html, :json, :js 

def index 
    @posts = current_user.posts 
    respond_with(@posts.to_json(:include => {:account => {:only => :institution}})) 
end 

これで私は、データベースから引き出されるIDの属性を持つモデルを得る上で、しかし:

window.Post = Backbone.Model.extend 
    urlRoot: '/posts' 

    defaults: 
    author_id: 2 

window.Posts = Backbone.Collection.extend 
    model: Post 
    url: '/posts' 

コントローラーを:ここで

が働いているコードですUserモデルのid属性を含む

window.User = Backbone.Model.extend 
    urlRoot: '/members' 

window.Users = Backbone.Collection.extend 
    model: User 
    url: '/members' 

コントローラー:

respond_to :html, :json, :js 

def index 
    @users = @account.users 
    respond_with(@users) 
end 

答えて

1

はあなたのモデルに_idを設定してみてください。ここを参照してください:

http://documentcloud.github.com/backbone/#Model-idAttribute

idAttribute model.idAttributeを:モデルの一意の識別子は、id属性の下 を格納しています。別の一意のキーを使用する バックエンド(CouchDB、MongoDB)と直接通信している場合は、 はモデルのidAttributeを設定して、そのキーからidに透過的にマッピングできます。

モデルがデータベースからアプリケーションに戻されると、バックボーンにそのキーが表示され、model.idが自動的に更新されます。例えば、私はmongodbを使い、model.idAttribute = "_id"を設定しなければなりません。

0

ご協力ありがとうございます、これは問題でした。 Railsのto_jsonやrespond_with(@user)は 'id'属性を削除していました。私はこれを[link] http://stackoverflow.com/questions/3719041/how-to-customize-to-json-response-in-rails-3 [link]経由で解決しました。

私のモデルでは、基本的にメソッド 'as_json'を作成し、idを含む属性のハッシュを返すようにしました。

関連する問題