This class represents a select list where multiple values can be selected. #value= accepts an array, and those values are used as values for the select list. For example, to select multiple values, simply do this:
list.value = ['one', 'two']
Single values are still supported, so these two are the same:
list.value = ['one'] list.value = 'one'
# File lib/mechanize/form/multi_select_list.rb, line 14 def initialize node value = [] @options = [] # parse node.search('option').each do |n| option = Option.new(n, self) @options << option end super(node, value) end
# File lib/mechanize/form/multi_select_list.rb, line 26 def query_value value ? value.collect { |v| [name, v] } : '' end
Select all options
# File lib/mechanize/form/multi_select_list.rb, line 37 def select_all @value = [] options.each { |o| o.tick } end
Select no options
# File lib/mechanize/form/multi_select_list.rb, line 31 def select_none @value = [] options.each { |o| o.untick } end
Get a list of all selected options
# File lib/mechanize/form/multi_select_list.rb, line 43 def selected_options @options.find_all { |o| o.selected? } end
# File lib/mechanize/form/multi_select_list.rb, line 59 def value value = [] value.push(*@value) value.push(*selected_options.collect { |o| o.value }) value end
# File lib/mechanize/form/multi_select_list.rb, line 47 def value=(values) select_none [values].flatten.each do |value| option = options.find { |o| o.value == value } if option.nil? @value.push(value) else option.select end end end