2016-08-30 40 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