我的表格
<% 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"
)。
处理此问题的优雅方法是什么?
感谢任何反馈
答案 0 :(得分:1)
好吧,我首先找到了困难的方法,然后通过提出另一个问题,我无意中找到了一个更好的答案来回答我原来的问题。这是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 %>
我难以为Searchlogic 2.x提出一些难以回答的问题,但由于任务并不总是如此简单,其他问题往往浮出水面。这是我希望回答的问题,这里没有涉及。