Backbone v0.9.2から0.9.10にアップグレードしていますが、ルーターからモデルをフェッチしようとすると、次のエラーが発生します。
TypeError: model.parse is not a function
if (!model.set(model.parse(resp, options), options)) return false;
サーバーからモデルを正常にフェッチしますが、それを爆破します。
使用:最新のBackboneJS、最新のUnderscoreJS、最新のバックボーンサポート(thoughtbotから)、jQuery 1.8.3、Railsバックエンド
関連するコードは次のとおりです。
App.Models.User = Backbone.Model.extend({
urlRoot: '/users'
});
App.Collections.Users = Backbone.Collection.extend({
model: App.Models.User,
url: '/users'
});
App.Routers.Users = Support.SwappingRouter.extend({
initialize: function() {
this.collection = new App.Collections.Users();
this.el = $('div[role="main"]');
},
routes: {
'!/users/:id' : 'show'
},
show: function(userId) {
var user = new App.Models.User({ id: userId });
user.fetch();
// ...more code
}
});
var App = {
Models: {},
Collections: {},
Views: {},
Routers: {},
initialize: function() {
new App.Routers.Users();
if (!Backbone.history.started) {
Backbone.history.start();
Backbone.history.started = true;
}
};
Rails(3.2.10)バックエンドを持っているという事実と何か関係がありますか?http://backbonejs.org/#Model-parse
編集:これが私のRailsコントローラーのアクションです
class UsersController < ApplicationController
respond_to :json
def show
@user = find_user params[:id]
respond_to do |format|
format.js { render json: @user }
format.html { redirect_to '/#!/users/' + params[:id] }
end
end