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" />