sub url_for {
my $self = shift;
- return $_[0] if scalar(@_) == 1;
+ return $_[0] if (scalar(@_) == 1) && !ref($_[0]);
- my %params = @_;
+ my %params = ref($_[0]) eq 'HASH' ? %{ $_[0] } : @_;
my $controller = delete($params{controller}) || $self->_controller_name;
my $action = delete($params{action}) || 'dispatch';
- $params{action} = "${controller}::${action}";
+ $params{action} = "${controller}/${action}";
my $query = join('&', map { $::form->escape($_) . '=' . $::form->escape($params{$_}) } keys %params);
return "controller.pl?${query}";