0

В нижеприведенном фрагменте я делаю много манипуляций с базами данных в представлении. («Везде» и «Два каждого цикла»). Каков наилучший способ реорганизации этого кода из представления?Рефакторинг rails3 view activerecord call

По мнению: 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 -%> 
Смежные вопросы