gpt4 book ai didi

ruby-on-rails - 如何使用 collection_select 使用 searchkick gem 搜索 belongs_to?

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:45 25 4
gpt4 key购买 nike

我的应用程序中有两个主要模型,“业务”和“类别”。我目前有一个工作正常的搜索 text_field,但我也在尝试实现用户根据包含可用类别的 collection_select 搜索“属于”某个类别的企业的能力。

我有 collection_select 工作,但我似乎无法弄清楚如何让它显示“属于”所选类别的企业。

这是我的业务 Controller 中的搜索信息:

  def search
if params[:search].present?
@businesses = Business.search(params[:search])
else
@businesses = Business.all.paginate(page: params[:page], per_page: 6)
end
end

我的搜索表单:

<%= form_tag search_businesses_path, method: :get, role: "search", :class => "search" do %>
<%= label :category, "Search By Business Name" %>
<%= text_field_tag :search, params[:search], id: "search", :placeholder => 'Search Business' %>
<%= button_tag(type: 'submit', class: "button") do %>
<i class="fa fa-arrow-right"></i>
<% end %>
<% end %>

和我当前的类别集合选择:

<%= form_for :category do |f| %>
<%= f.label :category, "Search By Category" %><br>
<%= f.collection_select :category_id, Category.all.order('name ASC'), :id, :name %>
<%= button_tag(type: 'submit', class: "button") do %>
<i class="fa fa-arrow-right"></i>
<% end %>
<% end %>

我知道我需要告诉集合选择它需要显示业务,但我似乎无法弄清楚如何正确地实现它。

更新

我尝试了以下代码,但没有出现任何结果:

我的商业模式

def search_data
{
name: name,
category_id: category_id
}
end

我的业务主管

def search
if params[:search].present?
@businesses = Business.search "apples", where: { category_id: params[:category_id] }
else
@businesses = Business.all.paginate(page: params[:page], per_page: 6)
end
end

我的表单

<%= form_tag search_businesses_path, method: :get, role: "search", :class => "search" do %>
<%= label :category, "Search By Category" %>
<%= collection_select :search, params[:category_id], Category.all.order('name ASC'), :id, :name %>
<%= button_tag(type: 'submit', class: "button") do %>
<i class="fa fa-arrow-right"></i>
<% end %>
<% end %>

最佳答案

这对你有用吗:

Business 模型中定义这个方法:

def search_data
{
name: name,
category_id: category_id
}
end

或者我想你也可以这样写(不确定):category: category.name

因此这也会为 category 建立索引,然后您可以在您的 Controller 中使用它进行搜索,如下所示:

Business.search "apples", where: { category_id: params[:category_id] }

或者如果 category.name 有效,则 { category: params[:category] ​​}

根据您的表单更改params

关于ruby-on-rails - 如何使用 collection_select 使用 searchkick gem 搜索 belongs_to?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36115876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com