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