Ruby on rails 搜索.select().group()。是否可能?
我想创建一个搜索选择,通过分组处理唯一的名称 的目标是找到重复项,然后用作搜索参数 我想找到匹配的Ruby on rails 搜索.select().group()。是否可能?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想创建一个搜索选择,通过分组处理唯一的名称 的目标是找到重复项,然后用作搜索参数 我想找到匹配的LineItem:store\u title,这样我就可以创建一个select下拉列表来搜索与特定:store\u title匹配的LineItem 示例: 行项目数据库: line\u item.title=“Hello” line\u item.title=“Hello” line\u item.title=“好的” line\u item.title=“Bar” 我想在搜索以下内容时使用下拉选
LineItem
:store\u title,这样我就可以创建一个select下拉列表来搜索与特定:store\u title
匹配的LineItem
示例:
行项目数据库:
line\u item.title=“Hello”
line\u item.title=“Hello”
line\u item.title=“好的”
line\u item.title=“Bar”
我想在搜索以下内容时使用下拉选择标签:
- [选择]
- “你好”
- “好的”
- “酒吧”
LineItem.title
匹配的所有结果
我尝试了几种方法:
到目前为止,我已经能够将唯一的下拉选择字段设置为“工作”,但不确定是否正确,因为它创建了一个数组:
控制器:
@vendor_line_items = LineItem.where(vendor_id: @vendor.id).select(:store_title).group(:store_title).distinct
if params[:search]
@orders = Order.line_item_search(params[:search]).joins(:line_items).where(line_items: {vendor_id: @vendor.id})
end
def self.line_item_search(search)
scope = joins(:line_items)
line_items = scope.where(line_items: { id: LineItem.where(store_title: "#{search.downcase}") })
line_items
end
<%= form_tag vendor_orders_path, :method => 'get' do %>
<%= collection_select(:search, params[:search], @vendor_line_items, :store_title, :store_title, {}, {class: "form-control-sm col-5"})%>
<%= submit_tag "Search", :name => nil, class: "btn btn-primary btn-sm" %>
<% end %>
订单型号:
@vendor_line_items = LineItem.where(vendor_id: @vendor.id).select(:store_title).group(:store_title).distinct
if params[:search]
@orders = Order.line_item_search(params[:search]).joins(:line_items).where(line_items: {vendor_id: @vendor.id})
end
def self.line_item_search(search)
scope = joins(:line_items)
line_items = scope.where(line_items: { id: LineItem.where(store_title: "#{search.downcase}") })
line_items
end
<%= form_tag vendor_orders_path, :method => 'get' do %>
<%= collection_select(:search, params[:search], @vendor_line_items, :store_title, :store_title, {}, {class: "form-control-sm col-5"})%>
<%= submit_tag "Search", :name => nil, class: "btn btn-primary btn-sm" %>
<% end %>
查看:
@vendor_line_items = LineItem.where(vendor_id: @vendor.id).select(:store_title).group(:store_title).distinct
if params[:search]
@orders = Order.line_item_search(params[:search]).joins(:line_items).where(line_items: {vendor_id: @vendor.id})
end
def self.line_item_search(search)
scope = joins(:line_items)
line_items = scope.where(line_items: { id: LineItem.where(store_title: "#{search.downcase}") })
line_items
end
<%= form_tag vendor_orders_path, :method => 'get' do %>
<%= collection_select(:search, params[:search], @vendor_line_items, :store_title, :store_title, {}, {class: "form-control-sm col-5"})%>
<%= submit_tag "Search", :name => nil, class: "btn btn-primary btn-sm" %>
<% end %>
“get”do%>
无,类别:“btn btn主btn sm”%>
错误:
@vendor_line_items = LineItem.where(vendor_id: @vendor.id).select(:store_title).group(:store_title).distinct
if params[:search]
@orders = Order.line_item_search(params[:search]).joins(:line_items).where(line_items: {vendor_id: @vendor.id})
end
def self.line_item_search(search)
scope = joins(:line_items)
line_items = scope.where(line_items: { id: LineItem.where(store_title: "#{search.downcase}") })
line_items
end
<%= form_tag vendor_orders_path, :method => 'get' do %>
<%= collection_select(:search, params[:search], @vendor_line_items, :store_title, :store_title, {}, {class: "form-control-sm col-5"})%>
<%= submit_tag "Search", :name => nil, class: "btn btn-primary btn-sm" %>
<% end %>
[“store_title”]的未定义方法“downcase”:数组:
我是否可以更改模型以允许使用数组,或者我是否应该以另一种方式查找唯一的商店标题?如果您只想对该数组中的字符串进行降格,可以执行以下操作:
line_items = scope.where(line_items: { id: LineItem.where(store_title: search.map(&:downcase)) })
这将为您的查询提供一个大小写字符串列表。我尝试在搜索之前删除括号,以便括号不在搜索参数中,但无法找到它 做…:
line_items = scope.where(line_items: { id: LineItem.where(store_title: "#{search.join(', ')}") })
解决了。这将在搜索数据库之前删除括号,并起作用
**
更新:
**
查看我的问题的响应和答案:
顺便说一句,这不是一个公认的答案,因为它不适用于第二个搜索参数。仍在测试新代码