rails - 在标签和标题中搜索表单

时间:2013-11-06 13:53:26

标签: ruby-on-rails search acts-as-taggable-on

我有一个应用程序,我有两个模型: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

问题是,如何在标签和同一搜索标签中的标题上组合搜索?

1 个答案:

答案 0 :(得分: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]}%") 

现在它将搜索标题中的每个文字。

由于