0

我的控制器:

def index
  @unique_bug = Rating.find_by_sql("SELECT bug FROM ratings WHERE bug <> '' GROUP BY bug")
end

评级模型:

  def self.metrics_bug_count(bug)
    count = where(bug:"#{bug}").count
    total = Rating.find_by_sql("SELECT bug FROM ratings WHERE bug <> ''").count
    percentage = (count.to_f/total.to_f * 100)
    return count, percentage
  end

我的观点:

 <table class="table table-bordered">
  <tr>
  <th><h3>Bug</h3></th>
  <th><h3>Total Occurrences</h3></th>
  <th><h3>Frequency</h3></th>  
  </tr>
  <tr>
  <%@unique_bug.each do |rating| %>
  <% count, percentage = Rating.metrics_bug_count(rating.bug)%>
  <td><p class="text-center"><h4><%= rating.bug.capitalize %></h4></p></td>
  <td><p class="text-center"><h4><%= count %></h4></p></td>
  <td><p class="text-center"><h4><%= number_to_percentage(percentage, :precision => 2)%></h4></p></td>
  </tr>
  <%end%>
  </table>

如何使每一行(Bug、Total、Frequency)都可以排序?我在可排序表上观看Railscast剧集,但是那里的排序是在控制器中完成的。如何使用在我的模型中执行的更复杂的查找对我的表进行排序。

4

1 回答 1

0

您可以使用 .order 例如,Rating.order("count DESC")。此外,我认为您可以避免使用 find_by_mysql 并使用一些 rails 方法来进行更易读和更容易的查询。您也可以使用 .uniq 获得唯一的 1。

尝试看看 http://guides.rubyonrails.org/active_record_querying.html

于 2013-04-09T23:02:50.003 回答