如何用Ruby on Rails 3和Backbone.js实现网站长尾关键词优化?

2026-04-11 17:551阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计613个文字,预计阅读时间需要3分钟。

如何用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时:

我正在使用rails api开发一个backbone.js应用程序,它提供了如下所示的json:

[{ "title": "Da vinci Code", "price": "50" }, { "title": "Some other name", "price": "45" }],

去做:

>当用户访问网址“www.backboneapp.com/authors/1”时,它应显示属于作者的书籍列表.

进展:
– 服务器端-Rails [authorscontroller #show]

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错误.
在console.log中显示:
获取:www.backboneapp.com/authors/undefined

在Rails日志中:参数{id =>未定义}

*我哪里错了? *

任何帮助和建议都非常感谢

我将假设您并不是指路由器中的新AuthorList,而是新的AvailableBookList.

您的收藏中有两个问题:

>在您的网址定义中,这指的是窗口对象.
>您在构造函数中传递的id参数未应用于您的集合实例.它仅适用于视图(不适用于模型或集合).

如何用Ruby on Rails 3和Backbone.js实现网站长尾关键词优化?

要解决第一个问题,您可以使用函数来定义集合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; }, model: AvailableBook, url: function() { return "/authors/" + this.author_id; } });

更新

您还以错误的方式初始化您的收藏.根据Backbone.js source,构造函数签名是模型,选项:

window.available_books = new AvailableBookList(null, { id: id });

本文共计613个文字,预计阅读时间需要3分钟。

如何用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时:

我正在使用rails api开发一个backbone.js应用程序,它提供了如下所示的json:

[{ "title": "Da vinci Code", "price": "50" }, { "title": "Some other name", "price": "45" }],

去做:

>当用户访问网址“www.backboneapp.com/authors/1”时,它应显示属于作者的书籍列表.

进展:
– 服务器端-Rails [authorscontroller #show]

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错误.
在console.log中显示:
获取:www.backboneapp.com/authors/undefined

在Rails日志中:参数{id =>未定义}

*我哪里错了? *

任何帮助和建议都非常感谢

我将假设您并不是指路由器中的新AuthorList,而是新的AvailableBookList.

您的收藏中有两个问题:

>在您的网址定义中,这指的是窗口对象.
>您在构造函数中传递的id参数未应用于您的集合实例.它仅适用于视图(不适用于模型或集合).

如何用Ruby on Rails 3和Backbone.js实现网站长尾关键词优化?

要解决第一个问题,您可以使用函数来定义集合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; }, model: AvailableBook, url: function() { return "/authors/" + this.author_id; } });

更新

您还以错误的方式初始化您的收藏.根据Backbone.js source,构造函数签名是模型,选项:

window.available_books = new AvailableBookList(null, { id: id });