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 に答える