поиск по attribute_like_any с использованием нескольких слов в одном поле [searchlogic] - PullRequest
0 голосов
/ 04 сентября 2010

Моя форма

<% 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 Ответ

1 голос
/ 06 сентября 2010

Решение

Ну, сначала я нашел трудный путь, затем, задавая другой вопрос, я случайно нашел лучший ответ на свой первоначальный вопрос. Вот вторичный вопрос .

Модель

# 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?

...