2016-08-30 2 views
0

In Rails, ich möchte ein paar Tweets nach Anzahl der Gleichen, um zu bestellen params DESC mit und ich bin fest ..Rails5 - Bestellung mit Klasse-Methode und params

ich eine einfache Klasse Methode in meinem Modell schrieb:

class Twit < ApplicationRecord 

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

end 

Und hier ist meine Methode in meinem Controller:

class TwitsController < ApplicationController 

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

end 

Wenn ich @twits = Twit.most_liked nur verwenden, es funktioniert gut, aber wenn ich hinzufügen, meinen Zustand mit params schlägt fehl.

Vielen Dank!

+0

Dies ist mehr über grundlegende Kenntnisse, wie Rubin arbeitet als Schienen - ich würde Ihnen empfehlen, mit so etwas wie beginnen http://tryruby.org figur Erlernen Sie die Grundlagen der Sprache, bevor Sie mit dem Lernen von Rails beginnen. – max

Antwort

0

Es kann nicht funktionieren, weil Sie versuchen, den Einsatz nie metod erstellt. Sie erstellt

self.most_liked def Ordnung (wie: ab) Ende

Aber später rufen Sie 'most_liked (bla-bla)'.

Sie sollten:

  • Add param auf Ihre Methode:

    def self.most_liked (var1)

  • Oder create-Methode:

    def Most_liked (var1) Twit.where (x => var1) .order (wie: ab) Ende

  • Oder ändern Aufruf dieser Methode: Model.query.method - so:

    . Twit.where (params [: Filter]) most_liked

+0

Danke @SignorHarry !! – Eric

0

Es schlägt fehl, weil Sie die Methode self.most_liked ohne Parameter definiert haben und dann versuchen, einen Parameter Twit.most_liked (params [: filter]) zu übergeben.

Sie Methode

def most_liked(some_variable) 

definieren sollte oder eine Kette mit einer anderen Methode wie folgt:

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

Vielen Dank @Kamil, aber ich verstehe es immer noch nicht ... Kurz gesagt, was ich versuche zu tun, ist eine "Params" in meiner URL wie folgt: http://example.com/twits?filter= "Gefällt mir" und so meine Tweets-Liste nach der Anzahl der Gleichen sortiert. Tut mir leid, denn ich bin ziemlich neu bei Rails und Ruby! – Eric