2012-03-02 10 views
1

によってソートされた、ブログの記事のリストを作成するnanocを使用して、私は私がに実行しているhttp://daringfireball.net/archive/ブログのアーカイブページを作成するためにnanocを使用した月と年

で示されているものに似たリストを表示したいのですがnanocのブログ記事の日付に基づく問題。ここで私が試したコードは次のとおりです。

by_yearmonth = @site.sorted_articles.group_by{ |a| [a.date.year,a.date.month] } 
by_yearmonth.keys.sort.each do |yearmonth| 
    articles_this_month = by_yearmonth[yearmonth] 
    # code here to display month and year 
    articles_this_month.each do |article| 
     # code here to display title of blog post 
    end 
end 

nanocはa.date.yearまたはa.date.monthを理解していないようだ - 私はサイトをコンパイルしようとすると、私はというエラーを取得します"date"メソッドは未定義です。

答えて

1

アップデート:ここで働くことになったコードは、だddfreyneからいくつかの重要な方向への感謝:

# In lib/helpers/blogging.rb: 
def grouped_articles 
    sorted_articles.group_by do |a| 
    [ Time.parse(a[:created_at]).year, Time.parse(a[:created_at]).month ] 
    end.sort.reverse 
end 

# In blog archive item: 
<% grouped_articles.each do |yearmonth, articles_this_month| %> 
    <h2>Year <%= yearmonth.first %>, month <%= yearmonth.last %></h2> 
    <% articles_this_month.each do |article| %> 
     <h3><%= article[:title] %></h3> 
    <% end %> 
<% end %> 

ありがとう!

0

質問には質問がありません。 :)

あなたはほぼそこにいます。私は貼り付けたコードが記事を年月に正しく分割すると信じています。これでそれらを表示する必要があります。あなたはERBまたはHaml(これは前者を好む人もいるし、後者を好む人もいます)と一緒に行うことができます。たとえば、ERBの場合:

# somewhere in lib/ (I propose lib/helpers/blogging.rb) 
require 'date' 
def grouped_articles 
    sorted_articles.group_by do |a| 
    [ Date.parse(a[:date].year, Date.parse(a[:date]).month ] 
    end.sort 
end 

# in your blog archive item 
<% grouped_articles.each_pair do |yearmonth, articles_this_month| %> 
    <h1>Year <%= yearmonth.first %>, month <%= yearmonth.last %></h1> 
    <% articles_this_month.each do |article| %> 
     <h2><%= article[:title] %></h2> 
    <% end %> 
<% end %> 

私はそれをテストしていません。その要点です。

+0

お返事ありがとうございました(このようなクールなWebオーサリングツールの作成とサポートには大変感謝しています)。私は結果を表示する方法を理解していることを明確にすべきでした、私はちょうど簡潔さのために上記のコードからそれらを残しました。上記のいずれかのコードの私の問題は、最初の結果を私に与えることができないということです!私がコンパイルしようとすると、エラー "NoMethodError:#の未定義メソッド' date 'が返されます。ですから、私はnanocが日付を解析する別の方法を求めなければならないと考えていますが、私はそれが何であるか分かりません。再度、感謝します! – alt0

+0

ああ、私の間違い。 .dateは動作しません。属性にアクセスするには、[:日付]が必要です。これは文字列なので、Date.parseを使用する必要があります。コードスニペットを更新しました。 – ddfreyne

関連する問題