Sto usando la gemma Ransack in Rails 3.1. Tutto funziona come previsto. Tuttavia, ho un modulo di ricerca che cercherà una persona che utilizza a Soundex column con cui sto avendo un problema.Rails - Come non valutare un campo in un modulo di ricerca di Ransack
Nel mio modulo ho un campo "given_name_soundex_cont", che un utente inserirà il nome "Joe". Il mio controller converte "joe" in un codice soundex, quindi Ransack cerca una corrispondenza nella colonna "given_name_soundex".
Tutti i record corrispondenti vengono restituiti e sembrano soddisfacenti, tranne per il fatto che il campo in cui l'utente ha inserito la parola "joe" ora mostra invece il valore soundex (ovviamente perché ho modificato il parametro).
Quindi ho pensato di aggiungere un campo "given_name_cont" e nascondere il campo "given_name_soundex_cont", ma ora Ransack vuole includere "given_name_cont" nella query, che non desidero.
Qualcuno sa come posso includere campi in un modulo di ricerca di Ransack senza che Ransack li stia effettivamente valutando. In questo modo posso specificare quali campi sono da valutare e quali no.
Se aiuta questo è quello che ho in mio controller:
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
E a mio avviso:
<%= search_form_for @q do |f| %>
<label>Given Name:</label>
<%= f.text_field :given_name_soundex_cont %>
<%= f.submit %>
<% end %>