【问题标题】:rails - Search form in tags and titlerails - 在标签和标题中搜索表单
【发布时间】:2013-11-06 13:53:26
【问题描述】:

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

问题是,如何在同一个搜索标签中结合标签搜索和标题搜索?

【问题讨论】:

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


    【解决方案1】:

    如果你想显示匹配标题和标签的结果,你可以这样:

    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]}%") 
    

    现在它将搜索标题中的所有文本。

    谢谢

    【讨论】:

    • 太棒了!如果我在搜索框中输入整个标题,它会起作用,但是如果我只搜索标题的一个单词怎么办?抱歉,我没有足够的积分来投票
    猜你喜欢
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多