ruby-on-rails-3 – Backbone.js集合网址
我正在使用rails api开发一个backbone.js应用程序,它提供了如下所示的json:
[{ "title": "Da vinci Code","price": "50" },{ "title": "Some other name","price": "45" }], 去做: >当用户访问网址“www.backboneapp.com/authors/1”时,它应显示属于作者的书籍列表. 进展: def show @author = Author.find(params[:id]) @books = @author.books respond_to do |format| format.json { render :json => @books } format.html end end 2.Client侧-Backbone.js的 路由器: routes: { 'authors/:id': 'showauthor' },showauthor: function(id) { $('#container').empty(); window.available_books = new AvailableBookList({ id: id }); this.availablebooklistview = new AvailableBookListView({ id: id,collection: available_books }); $('#container').append(this.availablebooklistview.render().el); } AvailableBookList Collection: AvailableBookList = Backbone.Collection.extend({ model: AvailableBook,url: "/authors/" + this.id }) 查看部分: $(document).ready(function(){ AvailableBookListView = Backbone.View.extend({ tagName: 'section',className: 'availablebooklist',initialize: function() { _.bindAll(this,'render'); this.collection.bind('reset',this.render); },render: function() { this.collection.each(function(available_book) { var view = new AvailableBookView({ model: available_book,}); this.$('.availablebooklist').append(view.render().el); }); return this; } }); }); 问题:当我访问“www.backboneapp.com/authors/1”时,我收到404错误. 在Rails日志中:参数{id =>未定义} *我哪里错了? * 任何帮助和建议都非常感谢 解决方法
我将假设您并不是指路由器中的新AuthorList,而是新的AvailableBookList.
您的收藏中有两个问题: >在您的网址定义中,这指的是窗口对象. 要解决第一个问题,您可以使用函数来定义集合URL,这将使您进入正确的范围: AvailableBookList = Backbone.Collection.extend({ model: AvailableBook,url: function() { return "/authors/" + this.id; } }); 对于第二个,您可以定义一个初始化函数并在其中设置id属性: AvailableBookList = Backbone.Collection.extend({ initialize: function(models,options) { this.id = options.id; },model: AvailableBook,url: function() { return "/authors/" + this.id; } }); 出于可读性目的,我还建议将id重命名为author_id: AvailableBookList = Backbone.Collection.extend({ initialize: function(models,options) { this.author_id = options.author_id; },url: function() { return "/authors/" + this.author_id; } }); 更新 您还以错误的方式初始化您的收藏.根据Backbone.js source,构造函数签名是模型,选项: window.available_books = new AvailableBookList(null,{ id: id }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |