Ruby rails 显示评级系统的明星图片

Ruby on rails display star images for the rating system

我有一个简单的 rails 应用程序,用户可以在其中为产品留下评分,并且在我拥有它的那一刻,以便在索引页面上显示平均评分,所以对于 Animal Farm 这本书如果有评级:1、3、5,则该书的索引将显示 3。但我想要做的是用星星替换显示的数字,而不是显示 "star rating: 3" 它会显示 "star rating:" 然后是三个星星图像。有没有快速简单的方法来做到这一点?

/views/products/index.html.erb:

<div id="star-rating">
        <% if not product.no_of_stars.blank? %>
          Star rating: <%= product.no_of_stars %>
        <% else %>
          <%= link_to 'Please add a Review',{ controller: 'reviews', action: 'new', id: product.id } %>
        <% end %>
      </div>

/models/product.rb:

def no_of_stars
    self.reviews.average('no_of_stars')
end

我还需要知道在哪里保存星星的图像以及如何 select 显示那颗星星,目前我已经在 /app/assets/images 目录中了。我需要在没有 java.

的情况下纯粹在 ruby 中执行此操作

有人可以帮忙吗,我是 ruby 的新手,所以可以详细说明该怎么做吗?感谢阅读。

你可以找个帮手来做。如果您需要不同型号的星星,您可以在文件中添加一个助手 app/helpers/application_helper.rb(我使用“*”作为星星的表示):

module ApplicationHelper

  def render_stars(value)
    output = ''
    if (1..5).include?(value.to_i)
      value.to_i.times { output += '*'}
    end
    output
  end

end

您的重构视图将如下所示:

<div id="star-rating">
  <% if product.no_of_stars.blank? %>
    <%= link_to 'Please add a Review',{ controller: 'reviews', action: 'new', id: product.id } %>
  <% else %>
    Star rating: <%= render_stars(product.no_of_stars) %>
  <% end %>
</div>