2016-08-30 44 views
0

在Rails訂貨,我想訂購由喜歡的號碼一些鳴叫DESC使用params和我堅持..Rails5 - 用類的方法,而params

我寫在我的模型一個簡單的類方法:

class Twit < ApplicationRecord 

def self.most_liked 
order(like: :desc) 
end 

end 

這裏是我在我的控制器方法:

class TwitsController < ApplicationController 

def index 
    if params[:filter] 
    @twits = Twit.most_liked(params[:filter]) 
    else 
    @twits = Twit.all 
    end 
end 

end 

如果我只用@twits = Twit.most_liked,它工作正常,但是當我添加我的病情與params失敗。

謝謝!

+0

這是更多的是如何工作的紅寶石比Rails基礎知識 - 開始我會推薦喜歡的東西http://tryruby.org到FIGUR在開始學習鐵軌之前,先了解該語言的基礎知識。 – max

回答

0

它不能正常工作,因爲你嘗試使用從未創建梅託德。你創造了

高清self.most_liked 順序(如:DESC) 結束

但後來你叫 'most_liked(BLA-BLA)'。

您應該:

  • 添加參數去你的方法:

    高清self.most_liked(VAR1)

  • 或者創建方法:

    def most_liked(var1) Twit.where(X => VAR1).order(如:降序) 端

  • 或更改調用此方法,以: Model.query.method - 這樣:

    。Twit.where(PARAMS [:過濾器])most_liked

+0

感謝@SignorHarry! – Eric

0

由於您定義了不帶參數的self.most_liked方法,因此失敗,然後嘗試傳遞參數Twit.most_liked(params [:filter])。

你應該定義方法

def most_liked(some_variable) 

或類似這樣的另一種方法IT連鎖:

Twit.where(params[:filter]).most_liked 
+0

謝謝@Kamil,但我仍然沒有得到它......簡而言之,我想要做的是在我的網址中傳遞'params'像這樣'http://example.com/twits?filter=喜歡',並按照喜歡的數量排序我的推文列表。對不起,因爲我對Rails和Ruby很新穎! – Eric