所以我可以从数据库中获取一个集合并使用以下代码显示它:
var articles = new SimpleGoogleReader.Collections.Articles();
articles.fetch({
success: function(articles){
var view = new SimpleGoogleReader.Views.ArticlesIndex({model: articles});
view.render();
}
});
它运作得很好。
在我的Rails模型中(切换到rails一秒钟)我有一个发布模型和一个文章模型。每个出版物都有很多文章,每篇文章都属于一个出版物。此外,每篇文章都有一个publication_id列。
回到Backbone。现在我想做的是,从Backbone,获取我的文章集合,但只有具有指定发布ID的文章。这就是我所拥有的:
articles_by_id: function(id){
var articles = new SimpleGoogleReader.Collections.Articles();
articles.fetch({
data: {publication_id: id},
success: function(x){
console.log(x);
}
});
}
这仍然是我所有的文章,而不是我正在寻找的过滤版本。 目前我只想将数据打印到控制台,看看我是否获得了正确的数据。我将在稍后处理渲染视图。
有什么想法吗?
答案 0 :(得分:0)
您的API是否允许过滤?传递数据选项只会将它们添加到请求中,例如您的请求将如下所示。
http://www.yourdomain.com/articles?publication_id=id
然而,您可以获取所有这些内容,然后过滤您的收集客户端。
articles_by_id: function(id){
var articles = new SimpleGoogleReader.Collections.Articles();
articles.fetch({
success: function(x){
console.log(x.where({publication_id: id}));
}
});
}
答案 1 :(得分:0)
正如Kyle所提到的,您需要确保您的Rails“API”层支持将publication_id作为参数。您可以通过修改config/routes
文件或检查Rails操作中是否存在publication_id
来执行此操作。
例如,你可能有这样的事情:
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
end
将其更改为:
class ArticlesController < ApplicationController
def index
if params[:publication_id]
@articles = Article.where(:publication_id => params[:publication_id]).all
else
@articles = Article.all
end
end
end
这不是惯用的,通常你只是应用where
的条件类似于答案How to add conditional where clauses in rails,但它适用于这种情况。