0

私のビューには次の表があります。

  <table class="table table-bordered">
  <tr>
  <th><h3>Department</h3></th>
  <th><h3>Average Rating</h3></th>
  </tr>
  <tr>
  <%@unique_dept.each do |prod| %>
  <td><p class="text-center"><h4><%= prod.dept.capitalize %></h4></p></td>
  <td><p class="text-center"><h4><%= RatingSet.avg_rating_by_dept(prod.dept) %></h4></p></td>
  </tr>
  <%end%>
  </table>

私のコントローラーアクション:

 def index
     @unique_dept = Product.find_by_sql("SELECT dept FROM products WHERE dept <> '' GROUP BY dept")
  end

私のモデルの方法:

 def self.avg_rating_by_dept(dept)
    RatingSet.joins(:products).where("dept = ?","#{dept}").average(:product_rating).to_f.round(2)
  end

モデルの列に関連付けられていないため、Departmentどのように並べ替えることができますか?Average Rating

4

1 に答える 1

0

できるよ

@unique_dept = Product.find_by_sql("SELECT dept FROM products WHERE dept <> '' GROUP BY dept") 
@unique_dept = @unique_dept.sort_by{ |prod| prod.dept }

評価のために行う

RatingSet.joins(:products).where("dept = ?","#{dept}").average(:product_rating).to_f.round(2).order('products.product_rating')
于 2013-03-18T21:04:01.977 に答える