M
Mallory Cloutier
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
<SELECT NAME="dura"><OPTION SELECTED VALUE="300">Five
minutes</OPTION><OPTION VALUE="600">Ten minutes</OPTION><OPTION
VALUE="900">Fifteen minutes</OPTION></SELECT> <br>
but instead it generates
<SELECT NAME="dura"><OPTION SELECTED VALUE="300">Five
minutes</OPTION><OPTION VALUE="600">false</OPTION><OPTION
VALUE="900">false</OPTION></SELECT> <br>
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.
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
<SELECT NAME="dura"><OPTION SELECTED VALUE="300">Five
minutes</OPTION><OPTION VALUE="600">Ten minutes</OPTION><OPTION
VALUE="900">Fifteen minutes</OPTION></SELECT> <br>
but instead it generates
<SELECT NAME="dura"><OPTION SELECTED VALUE="300">Five
minutes</OPTION><OPTION VALUE="600">false</OPTION><OPTION
VALUE="900">false</OPTION></SELECT> <br>
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.