应用值前的星级评定基数

时间:2016-06-27 08:58:49

标签: ruby-on-rails

我目前有一个工作正常的评级系统

customers_helper.rb

module CustomersHelper
  def show_stars(review)
    @star = raw('<li><span class="glyphicon glyphicon-star"></span></li>') * (review.rating)
    @star.html_safe
  end
end

reviews.haml

%table.table.
  %thead
    %tr
      %th{ :style => "width:9%" } Ratings
      %tbody
        - @reviews.each do |review|
          %tr
            %td
              %ul.list-inline.rating=show_stars(review)

所有这一切都是取整数值1-5并相应地渲染出许多星。

我将如何总是渲染5颗星并根据数据库值为现有星星添加一个类?

1 个答案:

答案 0 :(得分:0)

这是我最近这样做的方式,不是那么干净(恕我直言),但它运作良好:

def total_stars
    5   
end

def show_stars(num_star)
    buffer = ""
    total_stars.times do |i|
        buffer << "<i #{ 'class=\'starred\'' if i < current_stars }>*</i>"  
    end
    buffer
end

show_stars(review.rating)