2016-06-27 11 views
0

私はモデルcourseにhas_many subcategoriesを持っています。サブカテゴリごとにグループ化されたコースを表示するページを作成したい。これまでのところ、私は正常に動作Railsでbelongs_toのクラスでgroup_byを実行しています

@courses = Course.personal_enrichment.order('subcategory_id').page params[:page] @courses_facet = @courses.group_by(&:subcategory_id)

がありますが、私は、ビューではなく、数に実際のサブカテゴリ名を表示する必要があります。私はこのタイプのものについていくつかの他の答えを見てきましたが、それらのほとんどはあなたがグループ化している属性がすでに人間が読めると仮定しています。多分私は何かを欠いているでしょうか?

答えて

1

ビューをレンダリングするときは、参照されているモデルの属性にアクセスできます。関連のサブカテゴリモデルは、このサブカテゴリの名前を取得するためにN + 1つのクエリを生成しますキャッシュされない限り

<% @courses_facet.each do |subcategory_id, courses| %> 
    <% subcategory_name = courses.first.subcategory.name rescue nil %> 
    <label><%= subcategory_name %></label> 
<% end%> 

group_byはハッシュを返すので、あなたはこのような何かを行うことができます。これを回避する1つの方法は、サブカテゴリレコードを初期結果セットに含めることです。

@courses.includes(:subcategories).group_by(&:subcategory_id) 
+1

ロックンロールマン。それは完璧に働いた。ありがとうございました! – nickmjones

関連する問題