Hi all, i tried to set up the helper method "grouped_programs_selector" in application_helpers.rb. Since i dont have a deep understanding of Ruby itself, I pretty much copied the Grouped Selection List (Chapter 17, pp. 259, 260) example from Dave & David's Book. The optiongroups are properly created by my method, but there are no options inside. Maybe you can debug this one? -snip- from index.rhtml <%= option_groups_from_collection_for_select( grouped_programs_selector(:programs, :programtypes), # calling application_helper - method. :options, :type_name, :id, :name, @programs) %> -snap- application_helper.rb module ApplicationHelper class ProgramOption attr_reader :attributes @attributes =  def initialize(id, name) @attributes = Struct.new(@id, @name) end end class ProgramType attr_reader :type_name, :options def initialize(name) @type_name=name @options= end def <<(option) @options << option end end # The actual helper method def grouped_programs_selector(programs, programtypes) groups =  @programtypes.each do |pt| newgroup = ProgramType.new(pt.name) @programs.each do |pr| if pt.id == pr.programtype newgroup << ProgramOption.new(pr.id, pr.name) end end groups << newgroup end return groups end end
on 2006-01-23 15:59
on 2006-01-23 16:15
In your ProgramOption's constructor, I think you have to use id and name instead of @id and @name
on 2006-01-23 16:41
Thanks for your quick answer. Nope, that didn't do the trick. But I found, that if pt.id == pr.programtype is never getting true. Strange...
on 2006-01-23 16:50
Timo wrote: > Thanks for your quick answer. > Nope, that didn't do the trick. But I found, that > > if pt.id <http://pt.id/> == pr.programtype > > is never getting true. Strange... That's because you're comparing a Fixnum to a ProgramType. Try: if pt == pr.programtype