代码之家  ›  专栏  ›  技术社区  ›  maček

按属性搜索,如在一个字段中使用多个词[搜索逻辑]

  •  0
  • maček  · 技术社区  · 15 年前

    我的形式

    <% form_for @search do |f| %>
      <%= f.input :name_like_any %>
      ...
    <% end %>
    

    控制器

    @search = Product.search
    @search.name_like_any(params[:search][:name_like_any].split(/\s+/))
    @products = search.all
    

    这将返回正确的结果,但现在我的表单将名称显示为 ["foo", "bar"] 而不是用户输入的内容( "foo bar" )

    处理这个问题的优雅方式是什么?

    感谢任何反馈

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    解决方案

    嗯,我先找到了困难的方法,然后通过问另一个问题,我无意中找到了一个更好的答案,我原来的问题。这里是 secondary question .

    模型

    # app/models/product.rb
    class Product < ActiveRecord::Base
      scope_procedure :keywords, lambda { |query|
        name_like_any(query.split(/\s+/))
      }
    end
    

    控制器

    # app/controllers/products_controller.rb
    class ProductsController < ApplicationController
      def index
        @search = Product.search(params[:search])
        @products = @search.all
      end
    end
    

    意见

    # app/views/products/index.html.erb
    <% form_for @search do |f| %>
      <%= f.label :keywords, "Quick Search" %>
      <%= f.input :keywords %>
      <%= f.submit, "Go" %>
    <% end %>
    

    敬请期待。。。

    我很难找到SearchLogic2.x中一些更难回答的问题,但由于任务并不总是那么简单,其他问题往往会浮出水面。这是我希望回答的一个问题,这里没有讨论。

    How to sanitize form params for use with Searchlogic?