Ruby on rails rails将两个搜索合并为一个,以显示两个结果

Ruby on rails rails将两个搜索合并为一个,以显示两个结果,ruby-on-rails,Ruby On Rails,我有一个从两个API中提取的模型和一个在两个单独面板中显示提要的视图。我有一个搜索方法,但似乎无法在它自己的面板中显示每个源的结果 如果未发送任何搜索词,则API将正常运行,并在单独的面板中显示提要。但是,如果我输入搜索词,则两个面板中都会显示相同的结果 以下是我在模型中的搜索操作: def self.search_for(query) return scoped unless :query.present? self.where('title LIKE :query', :

我有一个从两个API中提取的模型和一个在两个单独面板中显示提要的视图。我有一个搜索方法,但似乎无法在它自己的面板中显示每个源的结果

如果未发送任何搜索词,则API将正常运行,并在单独的面板中显示提要。但是,如果我输入搜索词,则两个面板中都会显示相同的结果

以下是我在模型中的搜索操作:

  def self.search_for(query)
    return scoped unless :query.present?
    self.where('title LIKE :query', :query => "%#{query}%")
  end
这是我的控制器:

def index
    @r_articles = params[:q] ? Article.where(source: 'source_A').limit(15).reverse_order && Article.search_for(params[:q]) : Article.where(source: 'source_A').limit(15).reverse_order#all.reverse
    @n_articles = params[:q] ? Article.where(source: 'source_B').limit(15).reverse_order && Article.search_for(params[:q]) : Article.where(source: 'source_B').limit(15).reverse_order
end
以下是我的看法:

    <%= form_tag "/", method: "GET" do %>
      <%= text_field_tag :q, params[:q] %>
      <%= submit_tag "Search" %>
    <% end %>
...
            <% if @r_articles.any? %>    
              <% @r_articles.each do |article| %>                   
                    <strong><%= article.category %> </strong><br>
                    <%= link_to article.title, article.url %><br>                      
                    <% end %>    
            <% else %>    
            <h4>Sorry, NO articles have a keyword that matches your query.</h4>    
            <% end %>

            <% if @n_articles.any? %>    
              <% @n_articles.each do |article| %>    
                    <strong><%= article.category %> </strong><br>
                    <%= link_to article.title, article.url %><br>
                  <% end %>        
            <% else %>   
            <h4>Sorry, NO articles have a keyword that matches your query.</h4>
            <% end %>

问题似乎是控制器中的&&运算符。var=thing1&&thing2将var设置为thing2,除非thing1为false或nil,Rails作用域链永远不会这样。我猜您正在尝试将两个查询相交,列出两个查询中出现的所有值,在这种情况下,单个&很可能会起作用:与&&不同,&由左侧的类定义,通常被覆盖为“相交”


如果您想要联合,请用单个|替换符号AND。

单个符号AND。还必须扩大我的搜索范围以包括OR。非常感谢。