rails将两个搜索组合成一个以显示两个结果

时间:2014-05-10 02:47:39

标签: ruby-on-rails

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

如果没有发送搜索字词,则API会在单独的面板中正常显示Feed。但是,如果我将搜索词放入,则两个面板中都会显示相同的结果。

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

  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 %>

1 个答案:

答案 0 :(得分:0)

问题似乎是控制器中的&&运算符。 var = thing1 && thing2将var设置为thing2,除非thing1为false或nil,Rails范围链永远不会是。我猜测你正在尝试与两个查询相交(列出两者中出现的所有值),在这种情况下,单个&可能会完成这项工作:与{{1}不同},&&由左侧的类定义,通常被覆盖为交叉。

如果您想要 union ,请用一个&替换&符号。