0

したがって、postgres db に永続化されているバックボーンを使用して (Rails インデックス リストの方法で) レンダリングされたこれらのアルバムを取得することはできません。

 [#<Album id: 1, title: "abbey road", artist: "the beatles", created_at: "2013-05-24 20:35:44", updated_at: "2013-05-24 20:35:44">, #<Album id: 2, title: "Random Access Memories", artist: "Daft Punk", created_at: "2013-05-24 20:36:14", updated_at: "2013-05-24 20:36:14">, #<Album id: 3, title: "Illmatic", artist: "Nas", created_at: "2013-05-24 20:36:51", updated_at: "2013-05-24 20:36:51">] 

サーバー側のインデックス メソッドは標準です`

  class AlbumsController < ApplicationController
    def index
    end

およびルートは同じように構成されています

resources :albums

アルバムをレンダリングするためのクライアント側のバックボーン部分は次のようになります

app.views.Home = Backbone.View.extend({

  template: JST['templates/home'],

    render: function() {
    this.$el.html(this.template());

    // Find all the albums in the system
    var albums = new app.collections.AlbumList();
    albums.fetch();
    console.log(albums);
    var _this = this;

    albums.fetch({
      success: function(albums, response, options) {
        albums.forEach(function(album) {
        _this.$el.find("#albums").append("<li><a href='#' class='album-link' data-id='" + album.id + "'>" + album.title() + "</a></li>");
        });
      }
    });

    // Add a <li> element containing a link to each profile page
    return this;
  },

});

ここに AlbumList コレクションがあります

app.collections.AlbumList = Backbone.Collection.extend({

  model: app.models.Album,
  url: '/albums'

});

しかし、コンソール ログ アルバムの場合、そのオブジェクトは長さ 0 です。ここでデータベースにリンクする手順を忘れていますか? ありがとう!

さらに、これはサーバーが送信しているGETリクエストです

Started GET "/albums" for 127.0.0.1 at 2013-05-25 09:13:00 -0400
Processing by AlbumsController#index as JSON
  Album Load (0.2ms)  SELECT "albums".* FROM "albums" 
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.2ms)

コンソールで上記の SQL クエリを手動で実行すると、正しい情報が取得されます。

4

1 に答える 1

1

サーバーは何の情報も送り返していませんでした。JSON で応答するように構成すると、次のように解決されます。

  def index
    @albums = Album.all

    render :json => @albums
  end
于 2013-05-25T13:56:58.017 に答える