5

Ransack を使用して、いくつかのモデルでかなり複雑な検索を実行しています。これらのモデルの 1 つはフリー テキストを保持し、acts_as_tggable gem を使用して単語にタグを付けます。

これらの単語のコレクション セレクターを作成して、ランサックがユーザーが定義できるタグのサブセットから全文レコードを見つけられるようにしようとしています。

これでほぼ到達できますが、複数の単語を選択しようとすると、結果が返されません!

= f.select :note_in, @freetexts.tag_counts_on(:tags), {}, {:multiple => true}
4

2 に答える 2

0

Ransack は、複雑な検索には向いていません。ランサックに十分なストレスをかけると、複雑な選択を行う場合よりも難しい問題で終わる可能性が非常に高くなります。

複雑な検索については、同じ ransack の作者による Sequel をお勧めします。

さらに、thes スレッドによると、あなたは行き​​止まりになっています: ランサックとタグ付け可能な機能の問題

于 2013-12-18T06:12:21.330 に答える
0

私はまったく専門家ではありませんが、この非ランサック ソリューションは、acts-as-taggable-on gem を使用してタグでフィルタリングする必要がある場合に有効です。

@search = MyModel.ransack(params[:q])
@result = @search.result(distinct: true).includes(:related_model)
@result = @result.tagged_with(params[:tags].split(/\s*,\s*/)) if params[:tags].present?
@result = @result.paginate(page: params[:page], per_page: 20)

これは、Ransack の範囲外の新しい :tags パラメータを想定しています。Ransack が提供する結果を除外するために使用できます。

于 2015-05-28T17:23:31.980 に答える