Failure in Spree's frontend on Ruby 2.0
Closed this issue · 1 comments
radar commented
Hello! By the issue title you're probably thinking that you should close this issue. Please don't!
I get this error when I run Spree's frontend build on Ruby 2.0.0:
1) Visiting Products should be able to display products priced under 10 dollars
Failure/Error: within(:css, '#sidebar_products_search') { click_button "Search" }
ActionView::Template::Error:
undefined method `encoding' for {"price_range_any"=>["Under $10.00"]}:ActiveSupport::HashWithIndifferentAccess
# /Users/ryanbigg/.rbenv/versions/2.0.0-p451/lib/ruby/2.0.0/cgi/util.rb:7:in `escape'
# /Users/ryanbigg/.rbenv/versions/2.0.0-p451/lib/ruby/gems/2.0.0/gems/canonical-rails-0.0.6/app/helpers/canonical_rails/tag_helper.rb:36:in `block in whitelisted_query_string'
# /Users/ryanbigg/.rbenv/versions/2.0.0-p451/lib/ruby/gems/2.0.0/gems/canonical-rails-0.0.6/app/helpers/canonical_rails/tag_helper.rb:36:in `each'
# /Users/ryanbigg/.rbenv/versions/2.0.0-p451/lib/ruby/gems/2.0.0/gems/canonical-rails-0.0.6/app/helpers/canonical_rails/tag_helper.rb:36:in `map'
# /Users/ryanbigg/.rbenv/versions/2.0.0-p451/lib/ruby/gems/2.0.0/gems/canonical-rails-0.0.6/app/helpers/canonical_rails/tag_helper.rb:36:in `whitelisted_query_string'
# /Users/ryanbigg/.rbenv/versions/2.0.0-p451/lib/ruby/gems/2.0.0/gems/canonical-rails-0.0.6/app/helpers/canonical_rails/tag_helper.rb:21:in `canonical_href'
# /Users/ryanbigg/.rbenv/versions/2.0.0-p451/lib/ruby/gems/2.0.0/gems/canonical-rails-0.0.6/app/helpers/canonical_rails/tag_helper.rb:25:in `canonical_tag'
# ./app/views/spree/shared/_head.html.erb:7:in `_1a267b5e5f91d9723f931f318739dddf'
I think it also happens on Ruby 1.9.
I am not familiar with your library, but I think it is to blame since it is at the root of this issue.
radar commented
I believe this parameter is the problem:
35: def whitelisted_query_string
=> 36: binding.pry
37: "?#{whitelisted_params.map{ |key, val| "#{CGI.escape(key)}=#{CGI.escape(val)}" }.join('&')}" if whitelisted_params.present?
38: end
[1] pry(#<#<Class:0x007fc0d0fd3070>>)> whitelisted_params
=> {"search"=>{"price_range_any"=>["Under $10.00"]}}
What should be proper way of dealing with that parameter being a Hash?