def R(c, *g)
if Controllers.constants.include?(cl = c.class.name.split("::").last.pluralize)
path = "/#{cl.underscore}/#{c.id}"
path << ".#{@format.to_s.downcase}" if @format
path << "/#{g.shift}" unless g.empty?
self / path
elsif c.respond_to?(:restful?) && c.restful?
base = c.name.split("::").last.underscore
id_or_action = g.shift
if id_or_action =~ /\d+/
id = id_or_action
action = g.shift
else
action = id_or_action
end
path = "/#{base}"
path << "/#{id}" if id
path << "/#{action}" if action
path << ".#{@format.to_s.downcase}" if @format
path << "?#{g.collect{|a|a.collect{|k,v| C.escape(k)+"="+C.escape(v)}.join("&")}.join("&")}" unless g.empty?
self / path
else
_R(c, *g)
end
end