我开始在我的Rails 5应用程序中使用Searchkick gem(Elasticsearch)。 目前,我在公司标题的搜索字段中。我想添加一个单独的下拉列表以分别搜索位置。
这是一个看起来像的例子:
这是我当前的解决方案,适用于标题搜索。但是我在添加位置搜索时遇到了问题。
控制器:
...
def index
query = params[:q].presence || "*"
@companies = Company.search(query, fields: [:title], match: :word_start, page: params[:page], per_page: 6)
end
...
def company_params
params.require(:company).permit(:title, :location)
end
这是我的index.html.erb
<%= form_tag companies_path, method: :get do %>
<%= text_field_tag :q, nil, class: "form-control", placeholder: "Search" %>
<% end %>
我知道必须更改控制器和视图。以下是该视图的无效示例:
<%= form_tag companies_path, method: :get do %>
<%= text_field_tag :q, nil, class: "form-control" %>
<%= select_tag :location, options_from_location_field_for_select(Location.all ..?) %>
<%= submit_tag "Search" %>
<% end %>
答案 0 :(得分:0)
在我看来,您只需要一个where
子句即可。
query = params[:q].presence || "*"
location = params[:location].presence || "*"
Company.search(
query,
fields: [:title],
match: :word_start,
where: { location: location },
page: params[:page],
per_page: 6
)