Ruby on rails rails将两个搜索合并为一个,以显示两个结果
我有一个从两个API中提取的模型和一个在两个单独面板中显示提要的视图。我有一个搜索方法,但似乎无法在它自己的面板中显示每个源的结果 如果未发送任何搜索词,则API将正常运行,并在单独的面板中显示提要。但是,如果我输入搜索词,则两个面板中都会显示相同的结果 以下是我在模型中的搜索操作: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', :
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。非常感谢。