radio_button() で :checked => false が checked="false" になる

Merb では、radio_button() で :checked => false を指定すると checked="false" になってしまうので悲しい。

## radio_button() では :checked=>false がサポートされない
<%= radio_button :name=>"foo", :value=>"Y", :checked=>false %>
  #=> <input type="radio" name="foo" value="Y" checked="false" />

## check_box() だとサポートしているのにね!
<%= check_box :name=>"foo", :value=>"Y", :checked=>false %>
  #=> <input type="checkbox" name="foo" value="Y" />


仕方ないので、global_helpers.rb に追加。

    def radio_button(*args)
      opts = args.last
      opts[:checked] = "checked" if opts.is_a?(Hash) && opts.delete(:checked)
      super
    end


これで、:checked => params[:foo] == "Y" みたいなことが書けるようになった。

<%= radio_button :name=>"foo", :value=>"Y", :checked=>(params[:foo]=="Y") %>
  #=> <input type="radio" name="foo" value="Y" checked="checked" />
  #=> または <input type="radio" name="foo" value="Y" />