From 740bb293e33bf88f1c06e194ea087723298b5e6c Mon Sep 17 00:00:00 2001 From: Matthew Ford Date: Thu, 26 Feb 2009 14:39:10 +0000 Subject: [PATCH] Fix for #161 When using Rails 2.3 it uses Rack::Utils to parse params --- History.txt | 1 + lib/webrat/core/elements/field.rb | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/History.txt b/History.txt index de7cf54b..00d632f1 100644 --- a/History.txt +++ b/History.txt @@ -2,6 +2,7 @@ * Minor enhancements + * When using Rails 2.3, use Rack::Utils to parse params (Matthew Ford) * Initial Merb and Sinatra compatibility for Selenium mode (Corey Donohoe) * Add application_framework config for Selenium mode to determine how to start and stop the app server (Corey Donohoe) diff --git a/lib/webrat/core/elements/field.rb b/lib/webrat/core/elements/field.rb index ef3fd2b5..fc3f9ec3 100644 --- a/lib/webrat/core/elements/field.rb +++ b/lib/webrat/core/elements/field.rb @@ -80,7 +80,7 @@ def to_param case Webrat.configuration.mode when :rails - rails_request_parser.parse_query_parameters("#{name}=#{escaped_value}") + parse_rails_request_params("#{name}=#{escaped_value}") when :merb ::Merb::Parse.query("#{name}=#{escaped_value}") else @@ -98,12 +98,15 @@ def unset protected - def rails_request_parser + def parse_rails_request_params(params) if defined?(ActionController::AbstractRequest) - ActionController::AbstractRequest - else + ActionController::AbstractRequest.parse_query_parameters(params) + elsif defined?(ActionController::UrlEncodedPairParser) # For Rails > 2.2 - ActionController::UrlEncodedPairParser + ActionController::UrlEncodedPairParser.parse_query_parameters(params) + else + # For Rails > 2.3 + Rack::Utils.parse_nested_query(params) end end