2012-04-16 10 views
1

テーブル(レッスン)を並べ替え、件名(レッスンのテーブルのAフィールド)でグループ化したいと考えています。その後、件名で表示します。テーブル項目を並べ替えてグループに分割する

だからヘッダを有するであろう:件名

そしてそれは、被験体における各項目の画像、タイトル、説明を表示するであろう。あなたは、ソートしてから分割するについて行くだろうかコントローラで

Math 
[img] [img] [img] ... 
title title title ... 
desc desc desc ... 

Science 
[img] [img] [img] ... 
title title title ... 
desc desc desc ... 

etc..... 

: それからそれはように例えば最大5つの項目

を次の件名に移動しますか?

ダイナミックな被写体がある場合、どのように表示するか?

+0

件名はどのように保存されていますか? 'has_many'レッスンのモデルですか? –

+0

申し訳ありません...私はそれをより良く書き留めておくべきでした。件名はレッスンのテーブルの列です –

+1

これはおそらくhas_manyレッスンの異なるテーブルにする必要があります。あなたがそれを持っている方法は非正規化されていて、一般的には[正規化されたデータ](http://en.wikipedia.org/wiki/Database_normalization)が最適です。 –

答えて

2

ニーズの肉はEnumerable#group_byによって満たされている:

my_lessons.sort_by{ |lesson| 
    # Or use ActiveRecord to sort your data 
    lesson.title 
}.group_by{ |lesson| 
    lesson.subject 
}.each do |subject,subj_lessons| 
    puts "subject: #{subject}" 
    subj_lessons.each do |lesson| 
    puts lesson.title 
    end 
end 

値(subj_lessons)があることを一致したすべての項目の配列である一方で、あなたのハッシュのための鍵となるでしょうどのようなあなたがGROUP_BYから戻りますグループ化。

これは、実際のデータと出力ニーズに合わせて変更してください。

関連する問題