On Mar 26, 2012, at 9:26 PM, Cluter Vipic wrote: > Hi, > > I also want a dynamic select menu but I want use jQuery and in my case > it doesn't works (I follow a different sly verano's tutorial) follow all > my steps > > NOTE: I want use a list of data from a database > > HOW CREATE the MODELS > > $ rails generate model basket shape:string > $ rails generate model apple color:string shape_id:integer > $ rails generate model table basket:string apple:string > > populate the database with a migration > > $ rails generate migration create_hierarchy > > /db/20120306193843_create_hierarchy.rb > > class CreateHierarchy< ActiveRecord::Migration > def self.up > g1 = Basket.create(:shape => "awesome") > g2 = Basket.create(:shape => "normal") > > a1 = Apple.create(:color => "Green", :basket_id => g1.id) > a2 = Apple.create(:color => "Reds", :basket_id => g1.id) > a3 = Apple.create(:color => "White", :basket_id => g2.id) > a4 = Apple.create(:color => "Purple", :basket_id => g2.id) > > end > > def self.down > # you can fill this in if you want. > end > end > > MODELS > > I have 3 model @table, @basket, @apple > > class Apple > belongs_to :tables > belongs_to: baskets > end > > class Basket > belongs_to :tables > has_many :apples > end > > class Table > has_many :baskets > has_many :apples > end > > CONTROLLER > > in the @table controller I have > > def index > @basket = Basket.find(:all) > @apple = Apple.find(:all) > @table = Table.new > end > > VIEWS > > the form is in app/views/tables/index.html.erb file > > <%= form_for @table do |f| %> > <%= f.collection_select(:basket, @basket, :id, :shape, {:prompt =>true}) > %> > <%= f.collection_select(:apple, @apple, :id, :color, {:prompt => true}) > %> > <%= f.submit %> > <% end %> > > IN THE ROUTES > > root :to => 'table#index' > > NOW when I load the page > > http://localhost:3000 > > I have 2 list menu > > {basket} > > {apple} > > **** jQuery ****** > > I use Rails 3.1 and this is my Gemfile I have > > ///////////////////// > > source 'http://rubygems.org' > > gem 'rails', '3.1.0' > > gem 'sqlite3' > > # Gems used only for assets and not required > # in production environments by default. > group :assets do > gem 'sass-rails', " ~> 3.1.0" > gem 'coffee-rails', "~> 3.1.0" > gem 'uglifier' > end > > gem 'jquery-rails' > > group :test do > # Pretty printed test output > gem 'turn', :require => false > end > ////////////// > > in the app/assest/javascript/table.js.coffee I have > > jQuery -> > apple = $('#table_apple').html() > console.log(apple) > $('#table_basket').change -> > basket = $('#table_basket :selected').text() > options = $(apple).filter("[label=#{basket}]").html() > console.log(options) > if options > $('#table_apple').html(options) > else > $('#table_apple').empty() > > but this script doesn't work 'cause onchange the first one {basket} the > second one is empty! > > I don't know where's my mistake > > thanks a lot in advance, > > C
You cannot update the contents of a select using html() (which is similar to Prototype's update() function). The only way to alter the options of a select cross-browser is to do the following: 1. Make a structure of your new elements, something like: var newOptions = [['one','One'],['two', 'Two'],['three', 'Three']] 2. Remove all of the existing options: myPicker.options.length = 0; 3. Loop through your array of new options, and build them up one at a time into options on the now-empty picker: for(i = 0; i < newOptions.length; i++){ myPicker.options[myPicker.options.length] = new Option(newOptions[i][0], newOptions[i][1]; } Hope this helps, Walter > > -- > Posted via http://www.ruby-forum.com/. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.