ViewHelper (Module)

In: libraries/view_helper.rb

Methods

Public Instance methods

Accepts a container (hash, array, enumerable, your type) and returns a string of option tags. Given a container where the elements respond to first and last (such as a two-element array), the "lasts" serve as option values and the "firsts" as option text. Hashes are turned into this form automatically, so the keys become "firsts" and values become lasts. If selected is specified, the matching "last" or element will get the selected option-tag.

Examples (call, result):

  html_options([["Dollar", "$"], ["Kroner", "DKK"]])
    <option value="$">Dollar</option>\n<option value="DKK">Kroner</option>

  html_options([ "VISA", "Mastercard" ], "Mastercard")
    <option>VISA</option>\n<option selected>Mastercard</option>

  html_options({ "Basic" => "$20", "Plus" => "$40" }, "$40")
    <option value="$20">Basic</option>\n<option value="$40" selected>Plus</option>

[Source]

    # File libraries/view_helper.rb, line 16
16:   def html_options(container, selected = nil)
17:     container = container.to_a if Hash === container
18:   
19:     html_options = container.inject([]) do |options, element| 
20:       if element.respond_to?(:first) && element.respond_to?(:last)
21:         if element.last != selected
22:           options << "<option value=\"#{element.last}\">#{element.first}</option>"
23:         else
24:           options << "<option value=\"#{element.last}\" selected>#{element.first}</option>"
25:         end
26:       else
27:         options << ((element != selected) ? "<option>#{element}</option>" : "<option selected>#{element}</option>")
28:       end
29:     end
30:     
31:     html_options.join("\n")
32:   end

[Validate]