Searchkick是一个用于实现全文搜索的Ruby gem。它可以与Elasticsearch集成,提供高效的搜索功能。
要让Searchkick返回在搜索框中传递的内容以及在下拉列表中选择的内容,可以通过以下步骤实现:
def search
@query = params[:query]
@selected_option = params[:selected_option]
@results = Product.search(@query, where: { category: @selected_option })
end
在上述代码中,我们通过params[:query]
获取搜索框中传递的内容,通过params[:selected_option]
获取下拉列表中选择的内容。然后,我们使用Searchkick提供的search
方法进行搜索,可以通过where
选项指定额外的搜索条件,这里我们使用category: @selected_option
来限定搜索结果的分类。
<%= form_tag search_path, method: :get do %>
<%= text_field_tag :query, @query, placeholder: "输入搜索内容" %>
<%= select_tag :selected_option, options_for_select(["选项1", "选项2", "选项3"], @selected_option), prompt: "选择一个选项" %>
<%= submit_tag "搜索" %>
<% end %>
在上述代码中,我们使用form_tag
创建一个GET请求的表单,表单的目标地址是search_path
,即搜索方法所在的路由。通过text_field_tag
和select_tag
分别创建搜索框和下拉列表,它们的值分别为@query
和@selected_option
,这样在页面渲染时会自动填充之前搜索的内容和选择的选项。
get '/search', to: 'products#search', as: 'search'
在上述代码中,我们将GET请求的/search
路由到products
控制器的search
方法,并将该路由命名为search
,以便在视图中使用。
通过以上步骤,当用户在搜索框中输入内容并选择下拉列表中的选项后,点击搜索按钮,会触发搜索方法,并返回符合条件的搜索结果。
推荐的腾讯云相关产品:腾讯云Elasticsearch
腾讯云Elasticsearch是基于开源Elasticsearch的托管式云搜索服务,提供稳定可靠的全文搜索能力。它具有高可用、高性能、易扩展等特点,适用于各种搜索场景。
产品介绍链接地址:腾讯云Elasticsearch
领取专属 10元无门槛券
手把手带您无忧上云