Estoy usando Ransack Gem in Rails 3.1. Todo funciona como se espera Sin embargo, tengo un formulario de búsqueda que buscará a una persona usando a Soundex column con la que estoy teniendo un problema.Rails - Cómo no evaluar un campo en un formulario de búsqueda de Ransack
En mi forma tengo un campo "given_name_soundex_cont", que un usuario ingresará el nombre "Joe". Mi controlador que convierte "joe" a un código soundex, y luego Ransack busca una coincidencia en la columna "given_name_soundex".
Todos los registros coincidentes son devueltos y parece correcto, excepto que el campo donde el usuario ingresó la palabra "joe" ahora muestra el valor soundex (por supuesto, porque cambié el parámetro).
Así que pensé que podría simplemente agregar un campo "given_name_cont" y ocultar el campo "given_name_soundex_cont", pero ahora Ransack quiere incluir "given_name_cont" en la consulta, que no quiero.
¿Alguien sabe cómo puedo incluir campos en un formulario de búsqueda de Ransack sin que Ransack realmente los evalúe? De esta forma puedo especificar qué campos no se evaluarán y cuáles no.
Si se ayuda a que esto es lo que tengo en el controlador:
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
Y en mi opinión:
<%= search_form_for @q do |f| %>
<label>Given Name:</label>
<%= f.text_field :given_name_soundex_cont %>
<%= f.submit %>
<% end %>