在Ruby on Rails上搜索两个参数

时间:2014-10-08 23:37:13

标签: ruby-on-rails ruby ruby-on-rails-3

我正在使用两个文本字段进行搜索。它搜索两件事(现在的位置和描述),并仅显示与两者匹配的条目(列表)。 我想第二个文本字段也搜索标题,所以它应该寻找描述和标题。这会怎么样?

这就是我现在所拥有的

listing.rb

def self.locsearch(search_location, search_description)
  return scoped unless search_location.present? || search_description.present?
  where(['location LIKE? AND description LIKE?', "%#{search_location}%", "%#{search_description}%"])
end

home.html.erb

<%= form_tag findjobs_path, :controller => 'listings', :action => 'locsearch', method: :get do %>
  <%= text_field_tag :location, params[:location] %>
  <%= text_field_tag :descripiton, params[:descripiton] %>
  <%= submit_tag "Search", name: nil %>
  <% end %

listings_controller.rb

def index
@listings = @listings.locsearch(params[:location], params[:description])
end

此外,我的locsearch方法现在使用or ||条件。我如何实现“和”条件? (如果我将||改为&amp;&amp;我得到错误“未定义的方法或变量scroped”

1 个答案:

答案 0 :(得分:2)

您确定要使用unless

吗? 仅当条件为假时,如果要执行指定的代码,则仅使用

unless

scoped与模型一起使用。

Model.scoped

您可以参考ApidockGithub

只有在您将return scoped定义为局部变量或方法时,才能编写scoped

您还可以看到scope for databases