quinta-feira, 12 de novembro de 2009

Formulário Simples de Pesquisa

A idéia desse post é permitir filtrar o grid de Locadoras que está na página index.

Sabemos que a página inicial é a página index.html.erb do controller Locadoras, abra o arquivo e adicione o trecho de código destacado.


O helper form_tag inicia uma tag form que aponta a ação para uma url configurada com locadoras_path e método get. De acordo com métodos padrões REST, locadoras_path será substituida por /locadoras, ou seja, com o verbo get e o path /locadoras, a ação a ser executada será a index - trocando em miúdos, carregará a própria página.

O helper text_field_tag cria um campo texto padrão, onde o primeiro parâmetro é o nome do campo e o segundo é o value - trocando em miúdos, um campo com nome :search e o valor será o próprio valor digitado quando o formulário for submetido.

O helper submit_tag cria um botão submit padrão, onde o primeiro parâmetro é o texto que aparecerá no botão, o segundo parâmetro é um hash, que nesse caso, estamos dizendo que o botão não tem campo nome, para que não seja passado pela url.

Como estamos chamando o método index, vamos alterá-lo no controller de locadoras.


Reparem que agora o método índex retorna @locadoras, que ao invés de ter ser resultado do método all (Locadoras.all), é resultado do método search, e de onde vem esse método search? Vem do model locadora, conforme abaixo:



Criamos o método search que recebe um parâmetro, verificamos se p existe, em caso afirmativo, chamamos o método find, onde o mesmo retornará todos os registros que atendam à condição passada, caso contrário, retorna todos os registros.

Este post foi baseado pelo vídeo abaixo:

http://media.railscasts.com/videos/037_simple_search_form.mov


2 comentários:

  1. Saudações amigão!!!

    o rails bahia tem lista de discussão? dei uma procurada e não achei!!!!

    Falows!

    ResponderExcluir
  2. Olá, tudo bom?
    Bacana seu blog cara!

    Ah, um detalhe: 'find(:all)' pode ser substituido por 'all' simplesmente :)

    Parabéns pelos posts.
    Abraços, sucesso!

    ResponderExcluir

Obrigado pela visita!