From 15b9b84cc413ef4e9828b4a951d7049a9131163d Mon Sep 17 00:00:00 2001 From: Paul van Tilburg Date: Wed, 25 Jan 2012 11:31:58 +0100 Subject: [PATCH] Fix form method override for PUT/DELETE support --- stoptime.rb | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/stoptime.rb b/stoptime.rb index 5c43741..cd1a997 100644 --- a/stoptime.rb +++ b/stoptime.rb @@ -76,21 +76,22 @@ module StopTime end -# = The Stop… Camping Time! helpers -module StopTime::Helpers - SUPPORTED = %w[get post] +# = The Stop… Camping Time! Markaby extensions +module StopTime::Mab + SUPPORTED = [:get, :post] - # Adds a method override for (usually) unsupported methods by browsers - # (i.e. PUT and DELETE) by injecting a hidden field to forms. - def form(options) - meth = options[:method] - override = !SUPPORTED.include?(meth) - options[:method] = 'post' if override - super(options) do + # Adds a method override field in form tags for (usually) unsupported + # methods by browsers (i.e. PUT and DELETE) by injecting a hidden field. + def tag!(name, attrs={}) + return super unless name == :form && block_given? + meth = attrs[:method] + attrs[:method] = 'post' if override = !SUPPORTED.include?(meth) + super do input :type => 'hidden', :name => '_method', :value => meth if override yield end end + end # = The Stop… Camping Time! models