Ruby on Rails display half a star for a decimal rating, e.g. 4.5

前端 未结 2 1333
-上瘾入骨i
-上瘾入骨i 2020-12-11 14:03

I am able to view 5 asterisks for a rating of 5 for a product, and 4 asterisks for a rating of 4 etc. But what I would like to do is replace the asterisks with an image of a

相关标签:
2条回答
  • 2020-12-11 14:59

    You can try with something like this:

    module ApplicationHelper
    
      def render_stars(value)
        i_value = value.floor
        f_value = value - i_value
    
        output = '*' * i_value
        output << image_tag('half_star.jpg') if f_value > 0
    
        output
      end
    
    end
    

    You might have to use .html_safe in the view.

    Your html.erb snippet looks wrong, however. It won't render correctly, and it will raise an error if you don't close the first if somewhere down the file. What do you want to achieve?

    0 讨论(0)
  • 2020-12-11 15:00

    Let's assume you want to use star.gif as a star image and half-star.gif as the 1/2 star image:

    module ApplicationHelper
      def render_stars(value)
        output = ''
        if (1..5).include?(value.floor)
          value.floor.times { output += image_tag('star.gif')}
        end
        if value == (value.floor + 0.5) && value.to_i != 5
          output += image_tag('half-star.gif')
        end
        output.html_safe
      end
    end
    
    0 讨论(0)
提交回复
热议问题