sort_linkヘルパーメソッドは属性またはアソシエーションの属性のみを受け入れることができますが、関連レコードの数、これは既存のレール機構を使用して可能です。
これを達成する最も簡単な方法は、counter_cache
を使用して、関連するモデルに属するオブジェクトの数を数える方法です。これをあなたが実際にこの名前をカスタマイズすることができ、それはまたしかし、questions_count
と呼ばれるビジネステーブルのデータベース列を必要と
has_many :questions, counter_cache: true
を(と:あなたはこのようなあなたのビジネスモデルに関連する本を追加する必要がありますあなたが質問の数をsort_linkメソッドに渡せるようにするものです)。
これを設定したら、問題なくsort_linkヘルパーメソッドを呼び出すことができます。
sort_link @q, :questions_count
counter_cache hereについての詳細を検索します。
また、これを達成するための別の方法があります。代わりにransacker
を定義することができます。これを使用して、ビジネスに関連するすべての質問に対してCOUNT機能を実行できるSQL文を明示的に記述することができますが、counter_cacheメソッドと同じように便利だとは思いません。主にSQL文がquestions_countメソッドの機能を再定義/置き換えるためです。
ransackersについて詳しくはhereをご覧ください。
これはransackを使用していませんが.... – Deekor
@collectionはあなたのransack検索の結果です。 Model.search(params)のようなもの.sort_by {| item | item.method_name} –
しかし、それは毎回ソートされます。ソートリンクがクリックされたときにソートするだけです。 – Deekor