0

我有一个应用程序,其中有两个模型:debateschallenges.

每个模型都有一个标题,我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 回答