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+unsubscribe@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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
No comments:
Post a Comment