0

そこで、rails-api gem を使用して Rails API を作成しました。そして、バックボーン コードをデフォルトの public/index.html に配置しました。json リンクを試してみたところ、json が返されました。これは、いくつかのデフォルトの Rails フィールドとともに「content」という単一のフィールドを持つ「entry」というモデルです。しかし、バックボーン コードが機能しません。これに関する問題を見つけることができますか? 返されたjsonからレコードのリストを表示しようとしています。

// モデル
window.Entry = Backbone.Model.extend();
window.EntryCollection = Backbone.Collection.extend({
    モデル:エントリー、
    url:"http://localhost:3000/エントリ"
});

// ビュー
window.EntryListView = Backbone.View.extend({
    tagName:'ul',
    初期化:関数 () {
        this.model.bind("リセット", this.render, this);
    }、
    render:function (イベント名) {
        _.each(this.model.models, 関数 (エントリ) {
            $(this.el).append("
  • " + entry.get("コンテンツ") + "
  • "); }、 これ); これを返します。 } }); // ルーター var AppRouter = Backbone.Router.extend({ ルート:{ "":"リスト" }、 リスト:関数 () { this.entryList = new EntryCollection(); this.entryListView = new EntryListView({model:this.entryList}); this.entryList.fetch(); $('#entries').html(this.entryListView.render().el); } }); var app = new AppRouter(); Backbone.history.start();
    4

    2 に答える 2

    0

    AppRouter コードには、次の行があります。

    this.entryListView = new EntryListView({model:this.entryList});
    

    ただし、entryList はモデルではなくコレクションであるため、次のように定義する必要があります。

    this.entryListView = new EntryListView({collection:this.entryList});
    

    同様に、EntryListView コードには次のものがあります。

    this.model.bind("reset", this.render, this);
    
    ...
    
    _.each(this.model.models, function (entry) {
    

    これは次のようになります。

    this.collection.bind("reset", this.render, this);
    
    ...
    
    _.each(this.collection.models, function (entry) {
    

    それがすべてかどうかはわかりませんが、すぐにわかるのはそれだけです。

    編集: this.model 参照に追加の変更を追加しました

    于 2012-09-28T13:37:58.373 に答える
    0

    /entries が「結果」ノードを返すかどうかを確認できますか? おそらく、Rails で ActiveRecord::Base.include_root_in_json = false を忘れていませんか?

    于 2012-09-28T11:10:16.850 に答える