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 に答える