我刚刚开始学习与Rails后端集成的AngularJS。我对scoped查询逻辑所属的位置感到困惑。
我有一个简单的博客,其中包含一些帖子和两个链接,应按“最新”和“最多投票”对帖子进行排序。
使用angular,这个范围逻辑在哪里?我看到ng-repeat上有一个'过滤器'选项,但是如果有数千个帖子然后使用过滤器来显示前10个投票最多,那么在我的索引操作中查询Post.all
似乎效率低下?
我很欣赏一个简单的解释,说明从用户点击“最多投票”链接到与后端API进行交互以正确确定查询范围的方式应该发生什么。
答案 0 :(得分:0)
我会在order_by
的请求中添加一个参数PostsController
。使用此参数,您可以决定如何订购从数据库中获取的帖子,然后将发送返回到角度。
值得注意两件事:
不要使用Post.all
,因为将所有记录提取到应用程序效率很低,甚至更糟糕的是将所有记录发送到客户端。使用分页:获取一定数量的帖子。您可以使用kaminari或will_paginate
请记住,不要将params[:order_by]
值直接作为Post.order()
参数,因为它可能会导致SQL注入。它在this Railscast