0

と の 2 つのモデルがあるアプリケーションがありdebatesますchallenges

すべてのモデルにはタイトルがあり、私はacts_as_taggable両方で使用しています。

すべてのタグを検索できる検索フォームがあります。

見る

<%= form_tag ("/search_results"), :method => "get", :id=>"search-form" do %>

  <%= text_field_tag ("search") , nil, :id=>"search-text",
    :onblur=>"if(this.value=='')this.setAttribute('class', 'search_input');",
    :onfocus=>"this.setAttribute('class', 'search_input_clear');",
    placeholder: "Chercher un débat"
 %>
<% end %>

そして私のコントローラーで:

def search_results
 @challenges = Challenge.tagged_with("#{params[:search]}")
 @debates = Debate.tagged_with("#{params[:search]}")
 @lists =   @debates + @challenges
end

問題は、同じ検索タグ内のタグとタイトルの検索をどのように組み合わせることができるかということです。

4

1 に答える 1

0

一致するタイトルでタグ付けされた結果も表示したい場合は、次のようにすることができます。

def search_results
 @tag_challenges = Challenge.tagged_with("#{params[:search]}")
 @title_search = Challange.where(:title => params[:search])
 @challenges =   @tag_challenges +  @title_search

 @tag_debates = Debate.tagged_with("#{params[:search]}")
 @title_debates = Debate.where(:title => params[:search]) 
 @debates = @tag_debates + @title_debates 
 @lists =   @debates + @challenges
end

これらの一意のレコードを見つけるだけで済みます。そして、あなたにはそれができると思います。

編集

問題ありません。ここでも SQL のようなクエリを記述できます。

@title_search = Challange.where("title LIKE %#{params[:search]}%")

@title_debates = Debate.where("title LIKE %#{params[:search]}%") 

これで、タイトル内のすべてのテキストが検索されます。

ありがとう

于 2013-11-06T14:55:02.077 に答える