inserir option em select de uma forma simples, existe?

5 views
Skip to first unread message

sidneivl

unread,
Nov 12, 2009, 1:52:48 PM11/12/09
to rails-br
Fala galera

Estou fazendo um formulário meio complexo aqui e agora me deparei com
uma dúvida.

tenho uma parte do formulário onde tenho um campo select com os tipos
de produtos e um campo select com os produtos

conforme seleciono um tipo do produto o campo de produtos tem que ser
"populado" com os dados que vem da base conforme o que selecionei em
tipos, coisa simples

a parte de pegar o id do tipo está certo, faço um remote_function em
onchange do campo de tipo e com o id faço um select com dos produtos.

agora preciso colocar meu retorno no campo select dos produtos, mas
procurei aqui na lista e por ai um jeito fácil de fazer isso mas não
achei...achei 2, um que usa javascript, meio complexo e outro que
substitui o campo do form que achei um pouco pedreiro, hehehe

não existe algo como

page[idDoCampo] << objeto

ou

page[idDoCampo].objeto = objeto?

valeu galera

Diego Lucena

unread,
Nov 12, 2009, 7:39:23 PM11/12/09
to rail...@googlegroups.com
Hum, se eu entendi bem parece-me o caso classico de select dinamico, como os de país > estado , ou estado -> cidade.

Sugiro que de uma olhada no episodio 88 do railscast que encina justamente fazer isso, porém eu acrescentaria algum gif de progresso dizendo que o segundo select esta sendo carregado.

espero ter ajudado.

att.

Diego

2009/11/12 sidneivl <sidn...@gmail.com>

sidneivl

unread,
Nov 16, 2009, 2:48:24 PM11/16/09
to rails-br
Eu tinha visto esse episódio e achei um tanto complexo essa solução,
acabei resolvendo desse jeito:

def listType
@productId = params[:value]
@selectId = params[:id]

@prodType = ProductType.find(:all, :conditions => ['product_id
= ?', @productId], :order => 'name')

render :update do |page|
page << "for(var i = document.getElementById('type_"+@selectId
+"').options.length; i > -1 ; i--){"
page << "document.getElementById('type_"+@selectId+"').remove
(i);"
page << "}"

@prodType.each do |p|
page << "var o = document.createElement('option');"
page << "o.text =" + "'" + p.name.to_s + "'"
page << "o.value =" + "'" + p.id.to_s + "'"
page << "document.getElementById('type_"+@selectId
+"').options.add(o);"
end
end
end

Ou seja, inclui uma rotina pequena que tinha em js dentro do código do
rails, funcionou perfeito.

se alguém tiver outra forma, pode falar.

[]'s

On Nov 12, 10:39 pm, Diego Lucena <diegojluc...@gmail.com> wrote:
> Hum, se eu entendi bem parece-me o caso classico de select dinamico, como os
> de país > estado , ou estado -> cidade.
>
> Sugiro que de uma olhada no episodio 88 do
> railscast<http://railscasts.com/episodes/88-dynamic-select-menus> que
> encina justamente fazer isso, porém eu acrescentaria algum gif de progresso
> dizendo que o segundo select esta sendo carregado.
>
> espero ter ajudado.
>
> att.
>
> Diego
>
> 2009/11/12 sidneivl <sidne...@gmail.com>
Reply all
Reply to author
Forward
0 new messages