でフィールドを評価しない方法。すべてが期待どおりに機能します。しかし、私は問題を抱えているa Soundex columnを使用している人を検索する検索フォームを持っています。私のフォームでRailsの - 私はRailsの3.1に<a href="https://github.com/ernie/ransack" rel="noreferrer">Ransack</a>宝石を使用しています掻き回す検索フォーム
は、私は、ユーザーが名前「ジョー」を入力することを、「given_name_soundex_cont」フィールドを持っています。私のコントローラーは "joe"をsoundexコードに変換し、Ransackは "given_name_soundex"列で一致するものを探します。
(私はPARAMを変更したため、もちろん)すべての一致するレコードは、ユーザが現在「ジョー」の単語を入力するフィールドが代わりにSOUNDEX値を示したことを除いて、返されると罰金だされています。
"given_name_cont"フィールドを追加して "given_name_soundex_cont"フィールドを非表示にすることができましたが、Ransackはクエリに "given_name_cont"を含めたいと思っています。
誰も私が掻き回すは、実際にそれらを評価せずに掻き回す検索フォームのフィールドを含めることができる方法を知っています。そうすれば、どのフィールドが評価され、どのフィールドが評価されないのかを指定することができます。
def index
if !params[:q].blank? # nil.blank? and [].blank? are true
search_params = params[:q]
search_params[:given_name_soundex_cont] = convert_to_soundex(search_params[:given_name_soundex_cont])
@q = Person.search(search_params)
@results = @q.result.limit(50)
else
@q = Person.search(params[:q])
@results = []
end
end
private
def convert_to_soundex(text)
Text::Soundex.soundex(text.to_s)
end
そして、私の見解では:
それはこのことができます場合は、私は私のコントローラに持っているものである
<%= search_form_for @q do |f| %>
<label>Given Name:</label>
<%= f.text_field :given_name_soundex_cont %>
<%= f.submit %>
<% end %>