Fix form method override for PUT/DELETE support

This commit is contained in:
Paul van Tilburg 2012-01-25 11:31:58 +01:00
parent 9879bb3a47
commit 15b9b84cc4
1 changed files with 11 additions and 10 deletions

View File

@ -76,21 +76,22 @@ module StopTime
end end
# = The Stop… Camping Time! helpers # = The Stop… Camping Time! Markaby extensions
module StopTime::Helpers module StopTime::Mab
SUPPORTED = %w[get post] SUPPORTED = [:get, :post]
# Adds a method override for (usually) unsupported methods by browsers # Adds a method override field in form tags for (usually) unsupported
# (i.e. PUT and DELETE) by injecting a hidden field to forms. # methods by browsers (i.e. PUT and DELETE) by injecting a hidden field.
def form(options) def tag!(name, attrs={})
meth = options[:method] return super unless name == :form && block_given?
override = !SUPPORTED.include?(meth) meth = attrs[:method]
options[:method] = 'post' if override attrs[:method] = 'post' if override = !SUPPORTED.include?(meth)
super(options) do super do
input :type => 'hidden', :name => '_method', :value => meth if override input :type => 'hidden', :name => '_method', :value => meth if override
yield yield
end end
end end
end end
# = The Stop… Camping Time! models # = The Stop… Camping Time! models