Block label helper

I've created a patch that lets the "label_tag" and "label" helpers accept blocks. I've found that it's quite common for labels to include markup beyond text, and things get messy quickly. Consider

    <%= f.label :terms, "<span>Accept #{link_to 'Terms', terms_path}</

" %>

versus

    <% f.label :terms do %>       <span>Accept <%= link_to "Terms", terms_path %></span>     <% end %>

Ticket with patch/tests:

https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/3645-let-label-helpers-accept-blocks

Stephen

Double bonus for this enhancement -thanks Stephen. I see that you have also made the "name" attribute optional -fantastic. Now one can implicitly apply a label to the enclosed input without having to worry about id matching with the 'for' attribute:

label_tag nil, "Your Name" do   text_field_tag 'name' end

IMO, the signature of #label_tag (and #label) should evolve to better support this practice as it reduces the need to keep DOM ids in sync between the input and the label. Perhaps by counting args to label_tag and assuming a single string argument is a contextual label.

Thanks for taking a look, Chris. Could others offer their opinions?

Stephen