0

我的表格

<% 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")。

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

感谢任何反馈

4

1 回答 1

1

解决方案

好吧,我首先发现了困难的方法,然后通过问另一个问题,我无意中找到了对我原来问题的更好答案。这是第二个问题

模型

# 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 找出一些更难回答的问题,但由于任务并不总是那么简单,其他问题往往会浮出水面。这是我希望回答的一个,这里没有涵盖。

如何清理表单参数以与 Searchlogic 一起使用?

于 2010-09-06T18:25:49.240 回答