2016-08-30 5 views
0

を注文、私は好きparamsを使用してDESCと私は立ち往生午前の数によっていくつかのつぶやきを注文したい。..Rails5 - Railsでは、クラスメソッドとの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を使用している場合は、それが正常に動作しますが、私はと私の条件を追加するとき失敗します。

ありがとうございました!

+0

をmost_likedレールの学習を始める前に、言語の基礎を理解してください。 – max

答えて

0

を。あなたはDEF

を作成 ため(のような::DESC)self.most_liked 終了

をしかし、その後、あなたは 'most_liked(BLA-BLA)' と呼びます。

あなたはする必要があります

  • あなたの方法にPARAMを追加します。

    はデフself.most_liked(VAR1)

  • またはメソッドを作成します。

    def most_liked(var1) Twit.where(X => VAR1).ORDER(等:DESC) 端にこの方法の

  • または変更コール: Model.query.method - そう:

    。Twit.where(のparams [:フィルタ]) - 私はfigurするあなたがhttp://tryruby.orgのようなもので始まる推薦する。これは、どのようにルビーレールよりも作品の基本的な知識についての詳細である

+0

ありがとう@SignorHarry !! – Eric

0

パラメータなしでself.most_likedメソッドを定義してから、パラメータTwit.most_liked(params [:filter])を渡そうとすると失敗します。

あなたは方法

def most_liked(some_variable) 

またはこのような他の方法でそれをチェーン定義する必要があります:あなたはmetodを作成したことはありません使用することを試みるので、それは動作しないことができる

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

ありがとう@カミルしかし、私はまだそれを取得しない...要するに、私がしようとしているのは、このような私のURLに 'params'を渡すことです' http://example.com/twits?filter= like 'なので、つぶやきのリストを好きな数だけ並べることができます。私はRailsとRubyでかなり新しいですので、申し訳ありません! – Eric

関連する問題