El 05/07/2010, a las 20:18, Randy Harmon escribió:
> I'm uncertain about the need to easily specify one-directional routes.
> While in theory it sounds fine, I don't understand why you'd want to
> specify either a route that isn't recognized (why bother routing it, in
> this case?) or one that doesn't generate the given path with url_for()
> (does it generate some other path instead?).
Well, I find that most routes map in both directions (ie. basically anything
that is specified using "resource" in the config/routes.rb file) but from time
to time I find non-resource routes that map only one way (ie. are routable, but
url_for won't necessarily generate what you want).
Mostly they seem to be routes declared with "match" like this one:
resource :posts
match '/posts/page/:page' => 'posts#index', :as => 'paginated_posts'
You can see here how the mapping doesn't work out the same in both directions:
- recognition: '/posts/page/2' is recognized as 'posts#index' with :page => '2'
- generation: 'posts#index' with :page => '2' generates '/posts?page=2'
Sometimes they can be reorganized so that they _do_ map in both directions; eg:
resources :posts do
collection do
get 'page/:page' => 'posts#index'
end
end
With that change, Rails does know how to do the reverse mapping.
But then there are ones which, as far as I know, can't be reorganized in that
way; here's one example from my current app:
# the resource
resource :links
# the shortcut to the links#show action
match 'l/:id' => 'links#show'
According to my experiments, the Rails routing assertions will say that URLs
like 'l/foo' are routable, but won't generate in reverse. So there's a case for
"assert_recognizes"/"map_to", for sure.
I agree with you that it doesn't make much sense to specify an unrecognizable
route, but I guess it is conceivable that you could have routes that were
recognizable in one direction, but only generated if fed a different set of
parameters. So you'd need to test them using a pair of "map_from"/"map_to" or
"assert_generates"/"assert_recognizes".
Cheers,
Wincent
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users