Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 搜索.select().group()。是否可能?_Ruby On Rails_Ruby - Fatal编程技术网

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(', ')}") })
解决了。这将在搜索数据库之前删除括号,并起作用

**

更新: **

查看我的问题的响应和答案:


顺便说一句,这不是一个公认的答案,因为它不适用于第二个搜索参数。仍在测试新代码