Select dinâmico com jquery

641 views
Skip to first unread message

Alexandre Souza

unread,
Nov 1, 2010, 7:57:50 AM11/1/10
to rail...@googlegroups.com
Pessoal

Bom dia

Estou com uma dúvida para o desenvolvimento de uma select box
dinâmica. Já fiz diversas pesquisas e não consegui desenvolver a
solução para o problema. Possuo um cadastro de fornecedores onde
preciso, ao escolher o estado, que a select box de cidades seja
atualizada com as cidades relativas a esse estado. Estou utilizando
rails 3 e, pelas pesquisas que fiz, a solução é a utilização de jquery
e ajax para atualizar essa select box que estou precisando. Já possuo
duas tabelas com as cidades e estados cadastradas no mysql.

Grato.

Abraço.

Pedro Augusto Dias de Vasconcelos

unread,
Nov 2, 2010, 9:33:03 AM11/2/10
to rail...@googlegroups.com
Fala Alexandre, beleza?

Você não precisa usar JQuery necessariamente. O Rails 3 já vem com o Prototype, uma biblioteca Java Script, e possui alguns helpers que facilitam o uso de Ajax e etc. Existe um helper específico chamado observe_field que faz parte do que você precisa. Ficaria algo mais ou menos assim na sua view:

<%= observe_field :estados, 
      :url => { 
        :controller => :cidades,
        :action => :cidades_por_estado
      },
      :update => :cidades 
%>

Como o nome já diz, ele fica observando um outro campo e quando tem mudanças no campo observado ele faz uma requisição ajax para a url que você setou e atualiza o campo cidades do form.

Ai você tem que implementar o método do controller CidadesController que retorna as cidades. Que poderia ser algo como:

def cidades_por_estado
   @members = Cidade.find_all_by_estado_id(params[:estado_id])
   render :layout => false
end 

Se você quiser você pode usar o JQuery, até prefiro ele do que o prototype, mas você terá que implementar o Javascript que faz o ajax e tudo mais. Também não é difícil de fazer. 

2010/11/1 Alexandre Souza <alexan...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/rails-br?hl=pt-BR.


Steimntz Machado de Figueiredo

unread,
Nov 3, 2010, 12:36:08 AM11/3/10
to rail...@googlegroups.com
Acho que se adicionar o jQuery e mudar o Rails.js(Prototype) para o Rails.js(jQuery) já vai funcionar assim, sem ter que entrar em códigos javascript.
Você pode usar com Prototype mesmo, porém no meu caso eu procuraria uma alternativa jQuery, já que não gosto de programar em javascript e o jQuery faz tudo para mim sem eu precisar escrever muito javascript.

Jhonathas Silveira de Matos

unread,
Nov 3, 2010, 9:01:24 AM11/3/10
to rail...@googlegroups.com
Pra mim não funcionou o observer field no rails 3 com Jquery, a saida foi utilizar o $.get()
Jhonathas Matos
--------------------------------------------------------
gtalk: jhon...@gmail.com
msn: jhon...@hotmail.com
twitter: www.twitter.com/jhonathasmatos

Fábio

unread,
Nov 3, 2010, 10:22:58 AM11/3/10
to rail...@googlegroups.com
Eu faço este tipo de drop-down da mesma maneira a anos... (e independente da linguagem/framework)

Usando a técnica apresentada no excelente livro jQuery In Action (Yehuda Katz é um dos autores :D)

Em uma chamada AJAX, retorno um JSON que representa uma coleção de dados com os values/captions para o drop-down.

Aqui tem um exemplo de implementação:



2010/11/3 Jhonathas Silveira de Matos <jhon...@gmail.com>



--

Att,

Fábio T. da Costa

fabiotc.com.br

My profiles: LinkedIn Facebook Twitter Last.fm
Contact me: Google Talk/ fabiotc


Ivan

unread,
Nov 4, 2010, 11:57:51 AM11/4/10
to rails-br
Na Amazon tem a segunda edição deste livro do Yehuda Katz, já com
jQuery 1.4 e lançada neste junho último, por US$ 39.67, com frete.

Sds.

On 3 nov, 12:22, Fábio <fabi...@gmail.com> wrote:
> Eu faço este tipo de drop-down da mesma maneira a anos... (e independente da
> linguagem/framework)
>
> Usando a técnica apresentada no excelente livro jQuery In Action (Yehuda
> Katz é um dos autores :D)http://www.manning.com/bibeault/
>
> Em uma chamada AJAX, retorno um JSON que representa uma coleção de dados com
> os values/captions para o drop-down.
>
> Aqui tem um exemplo de implementação:http://stackoverflow.com/questions/1502649/jquery-getjson-populate-se...
>
> 2010/11/3 Jhonathas Silveira de Matos <jhonat...@gmail.com>
>
>
>
> > Pra mim não funcionou o observer field no rails 3 com Jquery, a saida foi
> > utilizar o $.get()
>
> > Em 3 de novembro de 2010 02:36, Steimntz Machado de Figueiredo <
> > steim...@gmail.com> escreveu:
>
> > Acho que se adicionar o jQuery e mudar o Rails.js(Prototype) para o
> >> Rails.js(jQuery) já vai funcionar assim, sem ter que entrar em códigos
> >> javascript.
> >> Você pode usar com Prototype mesmo, porém no meu caso eu procuraria uma
> >> alternativa jQuery, já que não gosto de programar em javascript e o jQuery
> >> faz tudo para mim sem eu precisar escrever muito javascript.
>
> >> Em 2 de novembro de 2010 09:33, Pedro Augusto Dias de Vasconcelos <
> >> pedro.cap...@gmail.com> escreveu:
>
> >> Fala Alexandre, beleza?
>
> >>> Você não precisa usar JQuery necessariamente. O Rails 3 já vem com o
> >>> Prototype, uma biblioteca Java Script, e possui alguns helpers que facilitam
> >>> o uso de Ajax e etc. Existe um helper específico chamado observe_field que
> >>> faz parte do que você precisa. Ficaria algo mais ou menos assim na sua view:
>
> >>> <%= observe_field :estados,
> >>>       :url => {
> >>>         :controller => :cidades,
> >>>         :action => :cidades_por_estado
> >>>       },
> >>>       :update => :cidades
> >>> %>
>
> >>> Como o nome já diz, ele fica observando um outro campo e quando tem
> >>> mudanças no campo observado ele faz uma requisição ajax para a url que você
> >>> setou e atualiza o campo cidades do form.
>
> >>> Ai você tem que implementar o método do controller CidadesController que
> >>> retorna as cidades. Que poderia ser algo como:
>
> >>> def cidades_por_estado
> >>>    @members = Cidade.find_all_by_estado_id(params[:estado_id])
> >>>    render :layout => false
> >>> end
>
> >>> Se você quiser você pode usar o JQuery, até prefiro ele do que o
> >>> prototype, mas você terá que implementar o Javascript que faz o ajax e tudo
> >>> mais. Também não é difícil de fazer.
>
> >>> 2010/11/1 Alexandre Souza <alexandre....@gmail.com>
>
> >>> Pessoal
>
> >>>> Bom dia
>
> >>>> Estou com uma dúvida para o desenvolvimento de uma select box
> >>>> dinâmica. Já fiz diversas pesquisas e não consegui desenvolver a
> >>>> solução para o problema. Possuo um cadastro de fornecedores onde
> >>>> preciso, ao escolher o estado, que a select box de cidades seja
> >>>> atualizada com as cidades relativas a esse estado. Estou utilizando
> >>>> rails 3 e, pelas pesquisas que fiz, a solução é a utilização de jquery
> >>>> e ajax para atualizar essa select box que estou precisando. Já possuo
> >>>> duas tabelas com as cidades e estados cadastradas no mysql.
>
> >>>> Grato.
>
> >>>> Abraço.
>
> >>>> --
> >>>> Você está recebendo esta mensagem porque se inscreveu no grupo
> >>>> "rails-br" dos Grupos do Google.
> >>>> Para postar neste grupo, envie um e-mail para rail...@googlegroups.com
> >>>> .
> >>>> Para cancelar a inscrição nesse grupo, envie um e-mail para
> >>>> rails-br+u...@googlegroups.com<rails-br%2Bunsu...@googlegroups.com>
> >>>> .
> >>>> Para obter mais opções, visite esse grupo em
> >>>>http://groups.google.com/group/rails-br?hl=pt-BR.
>
> >>>  --
> >>> Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br"
> >>> dos Grupos do Google.
> >>> Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
> >>> Para cancelar a inscrição nesse grupo, envie um e-mail para
> >>> rails-br+u...@googlegroups.com<rails-br%2Bunsu...@googlegroups.com>
> >>> .
> >>> Para obter mais opções, visite esse grupo em
> >>>http://groups.google.com/group/rails-br?hl=pt-BR.
>
> >>  --
> >> Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br"
> >> dos Grupos do Google.
> >> Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
> >> Para cancelar a inscrição nesse grupo, envie um e-mail para
> >> rails-br+u...@googlegroups.com<rails-br%2Bunsu...@googlegroups.com>
> >> .
> >> Para obter mais opções, visite esse grupo em
> >>http://groups.google.com/group/rails-br?hl=pt-BR.
>
> > --
> > Jhonathas Matos
> > --------------------------------------------------------
> > gtalk: jhonat...@gmail.com
> > msn: jhon_...@hotmail.com
> > twitter:www.twitter.com/jhonathasmatos
>
> >  --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br"
> > dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > rails-br+u...@googlegroups.com<rails-br%2Bunsu...@googlegroups.com>
> > .
> > Para obter mais opções, visite esse grupo em
> >http://groups.google.com/group/rails-br?hl=pt-BR.
>
> --
>
> Att,
>
> Fábio T. da Costa
>
> fabiotc.com.br <http://www.fabiotc.com.br>
> My profiles: [image: LinkedIn]
> <http://www.linkedin.com/in/fabiotadeucosta> [image:
> Facebook] <http://www.facebook.com/fabiotcosta> [image:
> Twitter]<http://www.twitter.com/fabiotc> [image:
> Last.fm] <http://www.last.fm/user/fabiotc>
Reply all
Reply to author
Forward
0 new messages