ronald.evangelista
2008-May-23 09:22 UTC
R(c,*g) helper method can''t handle nested hash input params
params= {"search"=>"Search",
"date_begin"=>"2007-05-01",
"date_type"=>"created_on",
"order"=>1,
"report_type"=>"year_end",
"person"=>
{"reply_status_id"=>"1",
"created_on"=>
Tue, 01 May 2007 00:00:00 +0000..Fri, 23 May 2008 00:00:00 +0000},
"date_end"=>"2008-05-23"}
R(Report,params)
"/report/?search=Search&date_begin=2007-05-01&date_type=created_on&order
=1&report_type=year_end&person=reply_status_id1created_on2007-05-01T00%3A00%3A00
%2B00%3A00..2008-05-23T00%3A00%3A00%2B00%3A00&date_end=2008-05-23"
untested fix of module Helpers method R(c,*g)
def R(c,*g)
p,h=/\(.+?\)/,g.grep(Hash)
g-=h
raise "bad route" unless u = c.urls.find{|x|
break x if x.scan(p).size == g.size &&
/^#{x}\/?$/ =~ (x=g.inject(x){|x,a|
x.sub p,C.escape((a[a.class.primary_key]rescue a))})
}
h.any?? u+"?"+h[0].map{|x|
k, v = x
if Hash===v
name_ext, val = v.to_a.pop
k="#{k}[#{name_ext}]"
x=[k,val]
end
x.map{|z|
C.escape(z)
}*"="
}*"&": u
end
hope this gets fixed in Camping 2.0
