1

我正在从 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
4

0 回答 0