Un buscador

He metido otro recorte de código, en lugar de mirar cada parámetro uno
por uno, recorro el hash de params[:busqueda] y lo monto en un bucle.
Al final se me ha quedao en esto:

http://pastie.caboo.se/170771

El 26/03/08, Jesús García Carrero [email protected]
escribió:> Sólo una cosita, si tienes condiciones como array de cadenas le puedes

pasar a :conditions al final condiciones.join(" AND ") y te quitas lo de
agregar " AND " en cada condición si la cadena está vacía. Esto con 2 a
lo mejor no es muy interesante, pero como tengas muchas te va a limpiar
mucho el código.

Gracias! Me has ahorrado 10 líneas de código, lo cual es considerable
(tengo 11 campos en el formulario). Mucho más limpio ahora con el
join.

Jaime I.
escribió:> He metido otro recorte de código, en lugar de mirar cada parámetro uno

por uno, recorro el hash de params[:busqueda] y lo monto en un bucle.
Al final se me ha quedao en esto:

Parked at Loopia

Muy bonito sí señor, deberías publicarlo en el blog :slight_smile:

Pero… no tendrías que filtrar para no meter comparaciones con cadenas
vacías o nulas?

El 26/03/08, Jesús García Carrero [email protected]
escribió:> Jaime I. escribió:

He metido otro recorte de código, en lugar de mirar cada parámetro uno
por uno, recorro el hash de params[:busqueda] y lo monto en un bucle.
Al final se me ha quedao en esto:

Parked at Loopia

Muy bonito sí señor, deberías publicarlo en el blog :slight_smile:

Gracias :slight_smile: A ver si cuando lo tenga terminado hago un minitutorial.

Pero… no tendrías que filtrar para no meter comparaciones con cadenas
vacías o nulas?

Sí, estaría bien, porque ahora coge todos los campos aunque
esténvacíos. Aunque da los mismo resultados, pq buscar “campo LIKE ‘%%’” es
como buscarlo todo… pero más limpio si no va ese campo
vacío ahí.

Buena puntualización! Yo creo que es una buena medida.

J.

El 26/03/08, Borja Martín [email protected]
escribió:> Buenas,

Buenas,
yo no montaría la consulta a partir del hash recibido ya que siempre te
podrían mandar una petición con 800 parámetros e igual te la lia con la
base de datos. La solución sería automatizar la consulta y ahorrarte
código tal como has hecho, pero a partir de un hash que hayas definido
tu previamente:

mis_params = [‘param1’, ‘param2’, ‘param3’]

mis_params.each do |k|
condiciones << “(#{k} LIKE :#{params[:busqueda][k]})”
parametros[k.intern] = “%#{v}%”
end

Saludos

Jaime I.
escribió:> He metido otro recorte de código, en lugar de mirar cada parámetro uno