4

我想在我的 rails 4 应用程序中添加 5 星评级。大多数资源都需要用户模型。我的情况不同。我的目标是没有任何身份验证的网站访问者投票。我希望网站访问者为课程投票。

这是我的课程模型的一部分(course.rb)

has_many :ratings

然后 rating.rb

belongs_to :course

我希望在所有课程的索引页面上添加评级链接,即 course_controller 上的索引方法应该处理投票。当然,我可能需要使用评级控制器。我就是不能把它拉下来。并知道我应该怎么做?一个详细的答案将不胜感激。到目前为止,我所做的大部分工作都是基于本教程http://paweljaniak.co.za/2013/07/25/5-star-ratings-with-rails/虽然我仍然没有成功。

4

1 回答 1

5

您需要在表格中添加一列,Rating以便评分知道他们属于哪个课程。

rails generate migration add_course_reference_to_ratings course:references score:integer default: 0

您会注意到在迁移中默认分数是0.

迁移您的数据库rake db:migrate

您的评分需要路线,但您的评分应该只需要update操作:

resources :ratings, only: :update

在您的课程控制器中,将以下内容添加到您的index操作中已有的内容中:

def index
  @rating = Rating.where(comment_id: @comment.id).first
  unless @rating
    @rating = Rating.create(comment_id: @comment.id, score: 0)
  end
end

该教程中的视图和 JavaScript 内容应该可以正常工作。请注意,您没有针对已登录的用户进行验证,因此没有任何东西可以阻止人们发送影响平均值的无限评分。

于 2013-10-21T19:53:46.823 回答