2015-09-04 64 views
0

我想使用raty.js計算我的Rails應用程序中電影對象的平均星級評分。下面是我的代碼片段:未定義的方法'平均'

控制器/ movies_controller.rb

def show 
    @avg_review = @movie.average(:rating) 
end 

private 
def set_movie 
    @movie = Movie.find(params[:id]) 
end 

schema.rb

create_table "movies", force: true do |t| 
    t.integer "user_id" 
    t.string "title" 
    t.text  "description" 
    t.integer "image_id" 
    t.string "director" 
    t.float "rating" 
    t.integer "num_ratings" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.text  "url" 
    t.string "tracking" 
end 

我不斷收到錯誤:

undefined method `average' for #<.Movie:0x5b385d0> 

從我的理解,這是軌道中的a predefined method。但是,我收到錯誤。有人能幫我嗎?

+0

燦你發佈完整的錯誤? – Pavan

回答

7

從你引用的文檔中,average意味着在Movie模型本身上調用,而不是它的一個實例。

這將返回列的平均值。

@avg_review = Movie.average(:rating) 

您還可以添加的條件與查詢(我做了演示目的列):

# Get average of movie ratings from 2015 
@avg_review = Movie.average(:rating).where(year: '2015') 
+0

謝謝,這爲我解決了這個問題:) – adventuredoge

1

按照average方法的文檔。這是一個方法ActiveRecord::Calculations所以你應該ActiveRecord集合或直接在模型中使用它,但你想使用它的實例:

錯誤:

@avg_review = @movie.average(:rating) 

右:

@avg_review = Movie.average(:rating)