Forum: Rails-ES Búsqueda strings

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
778a304fc7ee03fd68a599860db3ef29?d=identicon&s=25 Diego Muñoz (dmgmit)
on 2007-05-28 14:11
Tengo una variable que proviene de un formulario, por ejemplo
datos="ATEM, FISI" y deseo seleccionar de mi base datos MySQL el
registro que corresponde al campo asignaturas="MATEMATICAS, FISICA".
Agradecería me fuera apuntada alguna técnica para realizar dicha
búqueda.

Gracias de antemano,

Diego
778a304fc7ee03fd68a599860db3ef29?d=identicon&s=25 Diego Muñoz (dmgmit)
on 2007-05-28 14:15
Diego Muñoz wrote:
> Tengo una variable que proviene de un formulario, por ejemplo
> datos="ATEM, FISI" y deseo seleccionar de mi base datos MySQL el
> registro que corresponde al campo asignaturas="MATEMATICAS, FISICA".
> Agradecería me fuera apuntada alguna técnica para realizar dicha
> búqueda.
>
> Gracias de antemano,
>
> Diego

Donde quise decir datos="ATEM, FISI"  quise decir datos="ATEM FISI"

Gracias por su atención,

Diego
E91518f050cb6081186ff461950099e0?d=identicon&s=25 Luis Villegas (Guest)
on 2007-05-28 16:20
(Received via mailing list)
No sé si te he entendido, pero puede que esto te sirva

en el controlador :

filtro = params[:datos].gsub(" ","%")  ---> con esto le pones el comodin
%
en todos los espacios
filtro = "%"+filtro+"%"
Asignatura.find :all (:conditions => ["campo_asignatura like ?", filtro
] )

Es algo así lo que quieres?
778a304fc7ee03fd68a599860db3ef29?d=identicon&s=25 Diego Muñoz (dmgmit)
on 2007-05-28 16:55
Luis Villegas wrote:
> No sé si te he entendido, pero puede que esto te sirva
>
> en el controlador :
>
> filtro = params[:datos].gsub(" ","%")  ---> con esto le pones el comodin
> %
> en todos los espacios
> filtro = "%"+filtro+"%"
> Asignatura.find :all (:conditions => ["campo_asignatura like ?", filtro
> ] )
>
> Es algo así lo que quieres?

Luis Villegas wrote:
> No sé si te he entendido, pero puede que esto te sirva
>
> en el controlador :
>
> filtro = params[:datos].gsub(" ","%")  ---> con esto le pones el comodin
> %
> en todos los espacios
> filtro = "%"+filtro+"%"
> Asignatura.find :all (:conditions => ["campo_asignatura like ?", filtro
> ] )
>
> Es algo así lo que quieres?

Antes de nada agradecer tu pronta respuesta. No obstante no es
exactamente lo que quiero. Me explico imaginad que tenéis un campo con
los apellidos y nombre. Ejemplo "PEREZ, JOSÉ". Desde un formulario se
solicita la búsqueda "PER JOS" o "JOS PER". Es obvio que lo que se
pretende es
buscar la ficha de PEREZ, JOSÉ  a través de una solicitud simplificada
de
datos, en este caso las tres primera letras de apellido nombre y, por
supuesto obviando la coma.

Gracias,

Diego
E91518f050cb6081186ff461950099e0?d=identicon&s=25 Luis Villegas (Guest)
on 2007-05-28 17:37
(Received via mailing list)
Pues eso sería algo así como:

condiciones  = [] --> creas un array vacío
    for dato in params[:datos].split(" ") --> lo separas por el espacio
      condiciones << "nombre like ('%#{dato}%') " ---> vas poniendo las
condiciones para que filtre por el mismo campo
    end
    Asignatura.find :all (:conditions => condiciones.join(" and ") )

con eso debería funcionarte
778a304fc7ee03fd68a599860db3ef29?d=identicon&s=25 Diego Muñoz (dmgmit)
on 2007-05-28 22:17
Luis Villegas wrote:
> Pues eso sería algo así como:
>
> condiciones  = [] --> creas un array vacío
>     for dato in params[:datos].split(" ") --> lo separas por el espacio
>       condiciones << "nombre like ('%#{dato}%') " ---> vas poniendo las
> condiciones para que filtre por el mismo campo
>     end
>     Asignatura.find :all (:conditions => condiciones.join(" and ") )
>
> con eso debería funcionarte

La solución que apuntas es la correcta. Muchas gracias por tu
colaboración.

Diego
This topic is locked and can not be replied to.