<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9068462256179767217</id><updated>2011-04-21T13:43:07.314-07:00</updated><title type='text'>Jardel Bordignon - Ruby on Rails / Flex</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jardelonrails.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9068462256179767217/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jardelonrails.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jardel Bordignon</name><uri>http://www.blogger.com/profile/12151862228088469422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_kd1nLZb2yRc/SOpHNOKOAUI/AAAAAAAAADQ/ybxXv929gtI/S220/jardel.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9068462256179767217.post-1183605978400563813</id><published>2008-10-06T13:23:00.000-07:00</published><updated>2008-10-07T13:37:28.303-07:00</updated><title type='text'>Populando select com Ajax on Rails</title><content type='html'>&lt;p&gt;&lt;strong&gt;Esquema simples para popular um select com ajax.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;1º - Criar o projeto "MeusAmigos"&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&amp;gt; rails MeusAmigos&lt;br /&gt;&amp;gt; cd MeusAmigos&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;2º - Criar "Estado", "Cidade" e "Amigo"&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&amp;gt; ruby script/generate Model Estado nome:string&lt;br /&gt;&amp;gt; ruby script/generate scaffold Cidade estado:references nome:string&lt;br /&gt;&amp;gt; ruby script/generate scaffold Amigo cidade:references nome:string endereco:string&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;3º - na migrate xxxxxxx_create_cidades.rb&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;...&lt;/p&gt;  def self.up&lt;div&gt;     create_table :cidades do |t|&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; t.references :estado&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; t.string :nome&lt;/div&gt;&lt;div&gt;     end&lt;/div&gt;&lt;div&gt;     execute( insert_estados )&lt;/div&gt;&lt;div&gt;     execute( insert_cidades )&lt;/div&gt;&lt;div&gt;  end&lt;p&gt;  def self.insert_estados&lt;br /&gt;    &amp;lt;&amp;lt;-END_OF_DATA&lt;br /&gt;     insert into estados values&lt;br /&gt;     ( 1,  'Acre' ),&lt;br /&gt;     ( 2,  'Alagoas' ),&lt;br /&gt;     ( 3,  'Amapá' ),&lt;br /&gt;     ( 4,  'Amazonas' ),&lt;br /&gt;     ( 5,  'Bahia' ),&lt;br /&gt;     ( 6,  'Ceará' ),&lt;br /&gt;     ( 7,  'Distrito Federal' ),&lt;br /&gt;     ( 8,  'Espírito Santo' ),&lt;br /&gt;     ( 9,  'Goiás' ),&lt;br /&gt;     ( 10, 'Maranhão' ),&lt;br /&gt;     ( 11, 'Mato Grosso' ),&lt;br /&gt;     ( 12, 'Mato Grosso do Sul' ),&lt;br /&gt;     ( 13, 'Minas Gerais' ),&lt;br /&gt;     ( 14, 'Pará' ),&lt;br /&gt;     ( 15, 'Paraíba' ),&lt;br /&gt;     ( 16, 'Paraná' ),&lt;br /&gt;     ( 17, 'Pernambuco' ),&lt;br /&gt;     ( 18, 'Piauí' ),&lt;br /&gt;     ( 19, 'Rio de Janeiro' ),&lt;br /&gt;     ( 20, 'Rio Grande do Norte' ),&lt;br /&gt;     ( 21, 'Rio Grande do Sul' ),&lt;br /&gt;     ( 22, 'Rondônia' ),&lt;br /&gt;     ( 23, 'Roraima' ),&lt;br /&gt;     ( 24, 'Santa Catarina' ),&lt;br /&gt;     ( 25, 'São Paulo' ),&lt;br /&gt;     ( 26, 'Sergipe' ),&lt;br /&gt;     ( 27, 'Tocantins' )&lt;br /&gt;     END_OF_DATA&lt;br /&gt;  end&lt;/p&gt;&lt;p&gt;   def self.insert_cidades&lt;br /&gt;    &amp;lt;&amp;lt;-END_OF_DATA&lt;br /&gt;     insert into cidades values&lt;br /&gt;     ( 1, 1,  'Rio Branco' ),&lt;br /&gt;     ( 2, 2,  'Maceió' ),&lt;br /&gt;     ( 3, 3,  'Macapá' ),&lt;br /&gt;     ( 4, 4,  'Manaus' ),&lt;br /&gt;     ( 5, 5,  'Salvador' ),&lt;br /&gt;     ( 6, 6,  'Fortaleza' ),&lt;br /&gt;     ( 7, 7,  'Brasília' ),&lt;br /&gt;     ( 8, 8,  'Vitória' ),&lt;br /&gt;     ( 9, 9,  'Goiânia' ),&lt;br /&gt;     ( 10, 10, 'São Luís' ),&lt;br /&gt;     ( 11, 11, 'Cuiabá' ),&lt;br /&gt;     ( 12, 12, 'Campo Grande' ),&lt;br /&gt;     ( 13, 13, 'Belo Horizonte' ),&lt;br /&gt;     ( 14, 14, 'Belém' ),&lt;br /&gt;     ( 15, 15, 'João Pessoa' ),&lt;br /&gt;     ( 16, 16, 'Curitiba' ),&lt;br /&gt;     ( 17, 17, 'Recife' ),&lt;br /&gt;     ( 18, 18, 'Teresina' ),&lt;br /&gt;     ( 19, 19, 'Rio de Janeiro' ),&lt;br /&gt;     ( 20, 20, 'Natal' ),&lt;br /&gt;     ( 21, 21, 'Porto Alegre' ),&lt;br /&gt;     ( 22, 22, 'Porto Velho' ),&lt;br /&gt;     ( 23, 23, 'Boa Vista' ),&lt;br /&gt;     ( 24, 24, 'Florianópolis' ),&lt;br /&gt;     ( 25, 25, 'São Paulo' ),&lt;br /&gt;     ( 26, 26, 'Aracaju' ),&lt;br /&gt;     ( 27, 27, 'Palmas' )&lt;br /&gt;    END_OF_DATA&lt;br /&gt; end&lt;br /&gt;...&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;4º - criando o relacionamento&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;  class Estado &amp;lt; ActiveRecord::Base&lt;br /&gt;    has_many :cidades&lt;br /&gt; end&lt;/p&gt;&lt;p&gt; class Cidade &amp;lt; ActiveRecord::Base&lt;br /&gt;    belongs_to :estado&lt;br /&gt;    has_many :amigos&lt;br /&gt; end&lt;/p&gt;&lt;p&gt;  class Amigo &amp;lt; ActiveRecord::Base&lt;br /&gt;    belongs_to :cidade&lt;br /&gt;  end&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-style: normal; font-weight: normal;"&gt; &lt;/span&gt;5º - no controller Application&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; class ApplicationController &amp;lt; ApplicationController&lt;/div&gt;&lt;div&gt;     ...&lt;/div&gt;&lt;div&gt;     protected&lt;/div&gt;&lt;div&gt;     def carrega_estados&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;estados ||= Estado.find(:all).collect { |e| [e.nome, e.id] }&lt;br /&gt;&lt;/div&gt;&lt;div&gt;     end &lt;/div&gt;&lt;div&gt; end&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;6º - nos controllers Cidades e Amigos&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;class ...Controller &amp;lt; ApplicationController&lt;/p&gt;&lt;div&gt;     before_filter :carrega_estados&lt;/div&gt;&lt;div&gt;     ...&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;7º - nas views new e edit de cidades&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;   ...&lt;/div&gt;     &amp;lt;%= f.label :estado %&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;    &amp;lt;%#= f.text_field :estado %&amp;gt;&lt;br /&gt;    &amp;lt;%= f.select :estado_id, @estados, :prompt =&amp;gt; '-- selecione --' %&amp;gt;&lt;br /&gt;  ...&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;8º - nas views new e edit de amigos&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt; ...&lt;br /&gt;   &amp;lt;% form_for(@amigo) do |f| %&amp;gt;&lt;br /&gt;      &amp;lt;%= render :partial =&amp;gt; 'form',&lt;br /&gt;           :locals =&amp;gt; {:f =&amp;gt; f, :btn_label =&amp;gt; 'msg Criar ou Alterar'} %&amp;gt;&lt;br /&gt;   &amp;lt;% end %&amp;gt;&lt;br /&gt;...&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;9º - crie um partial amigos/_form.html.erb om o seguinte código:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;     ...&lt;br /&gt;    &amp;lt;%= f.error_messages %&amp;gt;&lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;      &amp;lt;td&amp;gt;&lt;br /&gt;        &amp;lt;%= f.label :estado %&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;        &amp;lt;%= select( '', 'seleciona_estado', @estados) %&amp;gt;&lt;br /&gt;      &amp;lt;/td&amp;gt;&lt;br /&gt;      &amp;lt;td&amp;gt;&lt;br /&gt;        &amp;lt;div id='cidades_container'&amp;gt;&lt;br /&gt;             &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Primeiro selecione o estado&lt;/span&gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;     &amp;lt;/tr&amp;gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;/table&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;%= observe_field('_seleciona_estado', :frequency =&amp;gt; 0.25,&lt;/div&gt;&lt;div&gt;        :update =&amp;gt; 'cidades_container',&lt;/div&gt;&lt;div&gt;        :url =&amp;gt; { :action =&amp;gt; :adiciona_cidades },&lt;/div&gt;&lt;div&gt;        :with =&amp;gt; "'estado_id='+value") %&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;p&amp;gt;    &lt;/div&gt;&lt;div&gt;       &amp;lt;%= f.label :nome %&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;div&gt;          &amp;lt;%= f.text_field :nome %&amp;gt;&lt;/div&gt;&lt;div&gt;       &amp;lt;/p&amp;gt;&lt;/div&gt;&lt;p&gt;       &amp;lt;p&amp;gt;&lt;br /&gt;         &amp;lt;%= f.label :endereco %&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;      &amp;lt;%= f.text_field :endereco %&amp;gt;   &lt;/p&gt;&lt;p&gt;       &amp;lt;/p&amp;gt;&lt;br /&gt;         &amp;lt;p&amp;gt; &amp;lt;%= f.submit btn_label %&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;&lt;/p&gt; &lt;span class="Apple-style-span" style="font-style: italic; font-weight: bold;"&gt;10º - crie uma view amigos/adiciona_cidades.html.erb com o seguinte código:&lt;span class="Apple-style-span" style="font-style: normal; font-weight: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; font-weight: normal;"&gt;Cidades do &amp;lt;i&amp;gt;&amp;lt;%= @estado.nome %&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; font-weight: normal;"&gt;&amp;lt;%= select( :amigo, :cidade_id, @cidades ) %&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;11º - no controller Amigos inclua:&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt; def adiciona_cidades&lt;br /&gt;   @cidades = Cidade.find_all_by_estado_id( params[:estado_id] ).collect { |c| [c.nome, c.id]  }&lt;br /&gt;   @estado = Estado.find( params[:estado_id] )&lt;br /&gt; end&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;12º - crie a view layouts/application.html.erb com o seguinte código:&lt;/span&gt;&lt;br /&gt;  &amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;      &amp;lt;title&amp;gt;&amp;lt;%= controller.action_name %&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;      &amp;lt;%= javascript_include_tag :defaults %&amp;gt;&lt;br /&gt;      &amp;lt;%= stylesheet_link_tag 'scaffold' %&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;      &amp;lt;%= link_to 'Cidades', cidades_path %&amp;gt;&lt;br /&gt;      &amp;lt;%= link_to 'Amigos', amigos_path %&amp;gt;&lt;br /&gt;      &amp;lt;p style="color: green"&amp;gt;&amp;lt;%= flash[:notice] %&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;       &amp;lt;%= yield  %&amp;gt;&lt;br /&gt;     &amp;lt;/body&amp;gt;&lt;br /&gt;   &amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;rode a migration&lt;br /&gt;&amp;gt;&amp;gt; rake db:migrate&lt;/p&gt;&lt;p&gt;rode o servidor&lt;br /&gt;&amp;gt;&amp;gt; ruby script/server&lt;/p&gt;&lt;p&gt;http://localhost:3000/amigos&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9068462256179767217-1183605978400563813?l=jardelonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jardelonrails.blogspot.com/feeds/1183605978400563813/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9068462256179767217&amp;postID=1183605978400563813' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9068462256179767217/posts/default/1183605978400563813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9068462256179767217/posts/default/1183605978400563813'/><link rel='alternate' type='text/html' href='http://jardelonrails.blogspot.com/2008/10/populando-selectfield-com-ajax-on-rails.html' title='Populando select com Ajax on Rails'/><author><name>Jardel Bordignon</name><uri>http://www.blogger.com/profile/12151862228088469422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_kd1nLZb2yRc/SOpHNOKOAUI/AAAAAAAAADQ/ybxXv929gtI/S220/jardel.JPG'/></author><thr:total>1</thr:total></entry></feed>
