0

以下のスニペットでは、ビューで多くのデータベース操作を行っています。 (.whereと2つの各ループ)。このコードをビューからリファクタリングする最良の方法は何ですか?ビューでRefactoring rails3ビューactiverecordコール

:index.html.erb

<%- @lesson.sections.each do |section| -%> 
      <%- section_correlations = section.correlations.where(:grade => 4) %> 
      <%- unless section_correlations.blank? -%> 
       <h3><%= section.full_title %></h3> 
       <%- section_correlations.each do |correlation| -%> 
         <%= correlation.description %> 
       <%- end -%> 
      <%- end -%> 
<%- end -%> 

答えて

1

セクションモデルファイルで使用すると、以下のような方法

def get_correlation_descriptions(grade) 
    correlations.where(:grade => grade).map { |c| c.description } 
end 

とレッスンのモデルでを追加することができます。

def sections_with_correlation_names(grade) 
    section_data = [] 
    sections.each do |s| 
    correlation_names = s.get_correlation_descriptions(grade) 
    unless correlation_names.blank? 
     section_data << { :name => s.full_title, :correlations => correlation_names } 
    end 
    end 
    section_data 
end 

を表示します。

<%- @lesson.sections_with_correlation_names(4).each do |section| -%> 
    <h3><%= section[:name] %></h3> 
    <%= section[:correlations].join("\n") %> 
<%- end -%>