2013-10-21 27 views
4

我想在我的軌道4應用程序中添加5星級評分。大部分資源需要用戶模型。我的情況不同。我針對的是網站訪問者,他們沒有進行身份驗證,無法進行投票。我希望網站訪問者投票選課。在軌道上添加5星級評分4

這是我的課程模式的一部分(course.rb)

has_many :ratings 

然後rating.rb

belongs_to :course 

我要添加到索引頁上的評級鏈接,所有的課程即course_controller的索引方法應該處理投票。當然,我可能需要使用收視率控制器。我不能把它關掉。想法我該怎麼去做呢?詳細的答案將不勝感激。我迄今爲止所做的大部分工作都是基於本教程http://paweljaniak.co.za/2013/07/25/5-star-ratings-with-rails/,儘管我仍未取得成功。

回答

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內容sho工作很好。請注意,您沒有針對登錄用戶進行驗證,因此沒有任何東西阻止用戶發送影響平均值的無限制評級。

+0

請注意,本教程中的JavaScript使用'@ commment' - 您應該在必要時顯然更改爲'@ course'。 – Simpleton

+0

不幸的是,收視率沒有加載到視圖上,訪客也沒有收到任何錯誤。我只是佔位符,空白Averate評級和您的評級。一切都設定好了。 @Simpleton我從raty站點下載了jquery.raty.min.js,並將其添加到我的application.js中// = require jquery.raty.min.js。對於你的情況,你已經使用了我找不到的raty.min.js。 –

+0

我遇到了同樣的問題,我也無法讓它顯示 – Daniel