I don''t have a blog, but wanted to share this little bit of code with
other semi-beginners like myself who are still learning to take
advantage of rails features.
Selecting an attribute with a boolean switch is a common pattern in
forms.  You can do it with a check box, but radio buttons are more
expressive in some situations and better convey to the user that they
are making a mandatory choice.  But doing this with radio buttons
typically takes 5 lines of html: 3 labels and 2 radio buttons.
Here''s a simple boolean button helper that you can put in your custom
form builder.
class YourCustomFormBuilder < ActionView::Helpers::FormBuilder
  ...
  def boolean_buttons_for(method, label_true = "true", label_false
"false" )
    @template.content_tag("div",
      @template.label(@object_name, method,
method.to_s.humanize, :class => ''align'' ) +
      @template.radio_button( @object_name, method, true ) +
      @template.label( @object_name, method.to_s + "_true",
label_true ) +
      @template.radio_button( @object_name, method, false ) +
      @template.label( @object_name, method.to_s + "_false",
label_false ), :class => "row")
  end
  ...
end
Then you can create a set of boolean button tags in your view like
this:
<% form_for :person, :builder => YourCustomFormBuilder do |f| %>
  ...
  <%= f.boolean_buttons_for :happy, "Yes", "No" %> 
#DRY
  ...
<% end %>
The above assumes you are using a custom form builder and building
your forms with the form_for helper. If you are not using a custom
builder, I assume you could open up the default FormBuilder and stick
it in there.  If you''re not using form builders, this code
won''t work
for you, but you could follow a similar pattern within
ApplicationHelper or your ControllerHelper.  You''ll have to get rid of
@template and @object_name, as they are only available inside the
FormBuilder object.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---