在简单的评论系统中无法获得明星

时间:2018-06-15 05:39:55

标签: ruby-on-rails ruby

我目前正在尝试在我的应用程序中实现一个简单的星级审查系统,并且我在大多数情况下都使用它。但问题是我无法让评论明星显示对商店的平均评价。有谁介意帮我理解什么是坏的?

存储/ show.html.erb:

<div class="star-rating" data-score= <%= @avg_review %> ></div>
<em><%= "#{@reviews.length} reviews" %></em>

这包含在视图的底部:

<script>
$('.star-rating').raty({
  path: '/assets/',
  readOnly: true,
  score: function() {
        return $(this).attr('data-score');
}
});
</script>

stores_controller.rb:

def show
@reviews = Review.where(store_id: @store.id).order("created_at DESC")

if @review.blank?
  @avg_review = 0
else
  @avg_review = @reviews.average(:rating).round(2)
end
end

谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

放入您的模型商店:

def average_rating
    reviews.count == 0 ? 0 : reviews.average(:rating).round(2)
end

(如果没有星= 0,否则我们平均音符)

在您看来:

<span id="average_rating"></span>

使用脚本:

<script>
$('#average_rating').raty({
    path: '/assets',
    readOnly: true,
    score: <%= @store.average_rating %>
});
</script>