Я начал использовать Самоцвет Searchkick (Elasticsearch) в своем приложении Rails 5. В настоящее время у меня есть поле поиска по названию компании. Я хотел бы добавить отдельный раскрывающийся список для отдельного поиска местоположения.
Вот пример того, как это будет выглядеть:
Вот мое текущее решение, которое работает для поиска по заголовку. Но у меня проблемы с добавлением поиска по местоположению.
Контроллер:
...
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 %>
Мне кажется, вам просто нужен пункт 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
)