在轨道上增加5星评级4

时间:2013-10-21 19:42:31

标签: jquery ruby-on-rails ruby

我想在我的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/,尽管我还没有成功。

1 个答案:

答案 0 :(得分: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内容应该可以正常工作。请注意,您没有对登录用户进行验证,因此没有任何内容阻止人们发送影响平均值的无限评级。