1

需要使用 created_at 字段按年份过滤文章。

我在这样的文章中获得了多年的链接:

文章助手:

  def artcles_by_years
    Article.uniq.pluck("EXTRACT(YEAR FROM created_at)")
  end

index.html.erb

  <% for art in artcles_by_years do %>
    <%= link_to art %>
  <% end %>

它显示:2009 2010 2011 2012,当然,非工作链接。

问题:

我将如何在控制器中建立工作链接和查询以按年份过滤文章,例如按 2009 并返回 2009 年创建的所有文章。谢谢。

4

1 回答 1

6

您可以为模型添加范围

scope :year, lambda{|year|
  where(" EXTRACT(YEAR FROM created_at) = ? ", year ) if year.present?  
}

并使用控制器中的范围:

@articles = Article.year(params[:year])

显示链接为:

<%= link_to art, articles_path( :year => atr) %>
于 2012-12-23T19:02:46.240 回答