[英]star rating rails 4 jquery ajax javascript raty
我试图按照本教程操作,但陷入了困境: 在Rails 4模型中添加了5星评级功能 。
我是javascript和ajax的初学者,所以我花了几个小时学习ajax如何与javascript一起工作。 我相信问题与average_rating
方法的位置有关(rails问题?)。
def average_rating
ratings.sum(:score) / ratings.size
end
目前,我完全按照本教程的内容讲解,同时用评论代替评论。 在本教程中,它说要在评论模型中定义average_rating(我的评论模型中是我的),但我不确定为什么要这样做。
我也添加了这个(不确定它是否属于当前控制器或它是否属于评级控制器):
#this is the controller used for the view which displays the stars
def page
@rating = Rating.where(review_id: @review.id, user_id: @current_user.id).first
unless @rating
@rating = Rating.create(review_id: @review.id, user_id: @current_user.id, score: 0)
end
end
当我尝试加载页面时,这是我得到的错误: ZeroDivisionError
在其下面说divided by 0
,并突出显示了该行score: <%= @review.average_rating %>,
更新当我从具有average_rating的视图中删除此脚本时,星号显示为my_rating。 所以有些东西弄乱了平均部分:
<script> #did not delete this line
$('#star').raty({
readOnly: true,
score: <%= @review.average_rating %>,
path: '/assets'
});
删除的部分^^^
基本上,我很想获得更多信息,但是这里有一些指针可能会有所帮助:
has_many :ratings
, has_many :ratings
具有'belongs_to:user /:review'。 其他方向-您是否通过控制器方法获得额定值? 如果是这样,请考虑将其更改为@ratings。 Rating.where(review_id: @review.id, user_id: @current_user.id).first_or_create do |rating| rating.score = 0 end
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.