JavaFree.org | RubyOnBr.org

Campo de busca

Acompanhar Campo de busca 10 posts, 5 participantes

Ma João Jr 78 posts

Como obrigar o usuário a passar algum argumento em um campo de busca.
Se eu clico no ok ele retorna todos os registro da tabela e demora pakas. Gostaria que ele digitasse o que procura. Assim o retorno seria bem mais rápido.

O código em uso é:

mereghost@edit: por favor use as tags code para postar código.

 
Cad10cd22abe80cca76b7579af2906e8 Ronaldo Possan 974 posts

Existem várias maneiras …
Acho que a principal é fazer via JS mesmo.
Quando ele clicar no botão, vc dispara um evento onclick para uma função que verifica se o campo tem texto ou não.
Se tiver, vc faz o submit, se não … não faz nada.
Ou deixa o botão desativado … e coloca um evento onchange do campo de texto verificando se tem value. Se sim vc abilita o botão, se não desabilita.

Abraço
\^/

 
Avatar Fernando Luizão 1863 posts

É só limitar o número de registros retornados.

 
Ma João Jr 78 posts

Mas por exemplo. A tabela tem 15.000 registros. Se eu faço uma busca por “Ana” e tem 100 registros com o nome “Ana”. É meio complicado limitar por causa disso. Vai que eu limito em 50. O bom mesmo era tipo: acima de 3 caracteres. Se tivesse como fazer um – validades_presence_of em um campo de busca.

Estou vendo uma solução via JS conforme o Ronaldo me orientou, mas se tiver uma solução no próprio text_field_tag eu acharia melhor, pois não sei nada de JS.

 
Avatar Mereghost 1476 posts

tu sempre pode verificar no controller se o parâmetro enviado pelo user está OK.

 
Avatar FabianoPS 63 posts

Claro, verifica no controller, se a string tem um tamanho mínimo retorna com paginação( procura por willpaginate :) ao invés de retornar todo find!

Se lembre de usar o :conditions da sua busca no formato: [" nome_busca = ?", param[:busca] ] para não tomar injection!

Usar JS no cliente para verificar é opcional, mas não conte com ele

 
Cad10cd22abe80cca76b7579af2906e8 Ronaldo Possan 974 posts

Entendi … o ideal mesmo é utilizar paginação, e no sql teriam os limit e offset.

\^/

 
Ma João Jr 78 posts

valeu pela idéia de paginação. dei uma lida no will paginator e é maravilhoso.
consegui implementar a consulta p/ index.

substituindo:

por:

Até ai tudo ok. mas como faço p/ implementar p/ meu controlador search.

?

Grato!

 
Avatar Fernando Luizão 1863 posts
 
Ma João Jr 78 posts

Perfect! Valeu pela ajuda.