在Rails中,我希望使用params
按照desc的数量来订购一些推文而且我被卡住了..
我在我的模型中写了一个简单的Class方法:
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 :(得分:0)
它失败了,因为您定义了没有参数的方法self.most_liked,然后尝试传递参数Twit.most_liked(params [:filter])。
您应该定义方法
def most_liked(some_variable)
或用另一种方法将其链接起来:
Twit.where(params[:filter]).most_liked
答案 1 :(得分:0)
它无法正常工作,因为您尝试使用从未创建过的metod。你创建了
def self.most_liked 订单(如:: desc) 端
但后来你打电话给'most_liked(bla-bla)'。
你应该:
为您的方法添加参数:
def self.most_liked(var1)
或创建方法:
def most_liked(var1) Twit.where(x =&gt; var1).order(like :: desc) 端
或者将此方法的调用更改为: Model.query.method - 所以:
Twit.where(PARAMS [:过滤器])。most_liked