したがって、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 クエリを手動で実行すると、正しい情報が取得されます。