diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-05-30 13:33:32 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-05-30 13:33:32 -0700 |
commit | fd97266a3f684bf1d41f702251fcb69ad9bd6dda (patch) | |
tree | 67608320ffc575a2e53a85dbfa992e2654d8d057 /actionpack/lib | |
parent | aab0d4e2c67df1bf05ddcb2b90bee8e5dfea5909 (diff) | |
parent | ab7a80ea22c94a006788eddfa3b92123b4031cb6 (diff) | |
download | rails-fd97266a3f684bf1d41f702251fcb69ad9bd6dda.tar.gz rails-fd97266a3f684bf1d41f702251fcb69ad9bd6dda.tar.bz2 rails-fd97266a3f684bf1d41f702251fcb69ad9bd6dda.zip |
Merge pull request #6556 from lest/patch-1
accept a block in button_to helper
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_view/helpers/url_helper.rb | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/actionpack/lib/action_view/helpers/url_helper.rb b/actionpack/lib/action_view/helpers/url_helper.rb index 7e69547dab..a4b10bc68a 100644 --- a/actionpack/lib/action_view/helpers/url_helper.rb +++ b/actionpack/lib/action_view/helpers/url_helper.rb @@ -294,6 +294,16 @@ module ActionView # # <div><input value="New" type="submit" /></div> # # </form>" # + # <%= button_to [:make_happy, @user] do %> + # Make happy <strong><%= @user.name %></strong> + # <% end %> + # # => "<form method="post" action="/users/1/make_happy" class="button_to"> + # # <div> + # # <button type="submit"> + # # Make happy <strong><%= @user.name %></strong> + # # </button> + # # </div> + # # </form>" # # <%= button_to "New", :action => "new", :form_class => "new-thing" %> # # => "<form method="post" action="/controller/new" class="new-thing"> @@ -331,7 +341,16 @@ module ActionView # # </div> # # </form>" # # - def button_to(name, options = {}, html_options = {}) + def button_to(*args, &block) + if block_given? + options = args[0] || {} + html_options = args[1] || {} + else + name = args[0] + options = args[1] || {} + html_options = args[2] || {} + end + html_options = html_options.stringify_keys convert_boolean_attributes!(html_options, %w(disabled)) @@ -350,9 +369,15 @@ module ActionView request_token_tag = form_method == 'post' ? token_tag : '' html_options = convert_options_to_data_attributes(options, html_options) - html_options.merge!("type" => "submit", "value" => name || url) + html_options['type'] = 'submit' + + button = if block_given? + content_tag('button', html_options, &block) + else + tag('input', html_options.merge('value' => name || url)) + end - inner_tags = method_tag.safe_concat tag('input', html_options).safe_concat request_token_tag + inner_tags = method_tag.safe_concat(button).safe_concat(request_token_tag) content_tag('form', content_tag('div', inner_tags), form_options) end |