我有一个应用程序,我有两个模型: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
问题是,如何在标签和同一搜索标签中的标题上组合搜索?
答案 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]}%")
现在它将搜索标题中的每个文字。
由于