Ruby on rails rails按标题对博客文章进行排序

Ruby on rails rails按标题对博客文章进行排序,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我意识到这可能是一种罕见的情况(两个或两个以上的用户会有相同的博客标题),但这是我的客户想要的,所以我必须弄清楚 我有一个查询@blog_posts(这是一个根据位置等更改帖子的查询)。我需要一种方法来列出所有帖子的标题,以及该标题在查询@blog\u posts 像这样: How to clean a car (2) I love baseball (1) 是否有分组和排序的标准实践 总之,我需要计算查询中出现的次数。@blog\u posts=Post。其中(…)(例如)--并非所有帖子都

我意识到这可能是一种罕见的情况(两个或两个以上的用户会有相同的博客标题),但这是我的客户想要的,所以我必须弄清楚

我有一个查询@blog_posts(这是一个根据位置等更改帖子的查询)。我需要一种方法来列出所有帖子的标题,以及该标题在查询
@blog\u posts

像这样:

How to clean a car (2)
I love baseball (1)
是否有分组和排序的标准实践


总之,我需要计算查询中出现的次数。
@blog\u posts=Post。其中(…)
(例如)--并非所有帖子都存在。听起来你基本上想要计算出现的次数:可以根据你的目的进行调整

如果你是1.8或更新,请考虑<代码> GROPY由 >:

ruby-1.9.2-p180 :002 > posts = ["How to clean a car", "How to clean a car", "I love baseball"]
 => ["How to clean a car", "How to clean a car", "I love baseball"]
ruby-1.9.2-p180 :007 > posts.group_by {|e| e}.map {|k, v| {k => v.length}}
 => [{"How to clean a car"=>2}, {"I love baseball"=>1}] 
像这样的

@blog_post_counts = Post.find(
  :all, 
  :select => "COUNT(*) AS count, title", 
  :group  => "title", 
  :order  => "count DESC"
)

当然,您需要修改查询,以便包括您的条件等。

是的,您可以使用模型中的命名范围(rails 3+语法)来执行此操作:

在控制器中:

@posts = Post.title_count

谢谢-我需要以某种方式访问视图中的标题、计数和帖子ID。我需要计算查询中出现的次数
@blog_posts=post.where(…)
--并非所有帖子都存在。可能类似于
@blog_posts.group_by{| post | post.title}.map{k,v{k=>v.length}
这样就行了,关于如何让我的视图显示的任何建议:
post.title(post.count)
-现在他们的打印都像:title2title5title8抱歉,我原来的代码有点马虎。这样更合适:
@blog_posts.group_by{post}post.title}。每个{title,posts}放置“{title}({posts.count})”
这是对所有帖子的查询。我需要它只在查询
@blog_posts=Post中选择的帖子上执行。其中(…)
不是整个数据库中的所有帖子。@masedesign-这很简单,只需在组行之前添加一个
其中('…')。
。作用域只是将所有这些不同的查询操作链接在一起。
@posts = Post.title_count