我有一个从两个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 %>
答案 0 :(得分:0)
问题似乎是控制器中的&&
运算符。 var = thing1 && thing2
将var设置为thing2,除非thing1为false或nil,Rails范围链永远不会是。我猜测你正在尝试与两个查询相交(列出两者中出现的所有值),在这种情况下,单个&
可能会完成这项工作:与{{1}不同},&&
由左侧的类定义,通常被覆盖为交叉。
如果您想要 union ,请用一个&
替换&符号。