Possible bug in CGI::HtmlExtension::popup_menu?

Hi all,
I’m trying to use popup_menu to generate a select box that remembers
what option it had selected when the page was generated. The relevant
lines of code are

dura_list = cgi.popup_menu(“dura”,
[“300”, “Five minutes”, (timespan == 300)],
[“600”, “Ten minutes”, (timespan == 600)],
[“900”, “Fifteen minutes”, (timespan == 900)])

where timespan has already been set to either the integer value of the
parameter “dura” or to a default value of 300.

According to the documentation as I understand it, this should generate

Five
minutesTen minutesFifteen minutes

but instead it generates

Five
minutesfalsefalse

Looking through the source for popup_menu on
http://ruby-doc.org/stdlib/libdoc/cgi/rdoc/index.html, I found

      if value.kind_of?(String)
        option({ "VALUE" => value }){ value }
      else
        if value[value.size - 1] == true
          option({ "VALUE" => value[0], "SELECTED" => true }){
            value[value.size - 2]
          }
        else
          option({ "VALUE" => value[0] }){
            value[value.size - 1]
          }
        end
      end

which I think is causing this. Since value[value.size - 1] is false,
the last else clause is getting triggered and using that as the option
text. I wasn’t able to find any other reports of this to see if there’s
a workaround or fix yet.

Just as a note, there seems to be a similar issue with explicit “false”
in checkbox_group. Are these really bugs, or am I just misunderstanding
how these methods are meant to be used, or what?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs