- map.connect('/art/new', controller='art', action='new')
- map.connect('/art/upload', controller='art', action='upload')
- map.connect('show_art', '/art/{id}', controller='art', action='show')
- map.connect('/art/{id}/tag', controller='art', action='tag')
+ art = map.resource('art','art', controller="art", member={'rate':'PUT'})
+ # wow, it even works if you name the plural and singular the same thing.
+ # Resources documented here: http://routes.groovie.org/manual.html#restful-services
+ # It seems the first parameter (singular) is only ever used in route names, e.g. url('kitten', id=5).
+ # The second parameter, plural, is used everywhere else by default: in the url, controller name,
+ # and the route name for the collection. e.g. url('kittens') -> '/kittens' -> kittens.index().
+ # Since our controllers have singular names, we'll have to override this every time with the 'controller' parameter.
+ # Even singular routes use the plural in urls. url('kitten', id=5) -> '/kittens/5'.
+ # And it appears that if the singular and plural are the same, either will match, so no harm done.
+ # It does mean, however, that if you have a None id accidentally, url('art', id=None) you'll get the same thing
+ # as url('art'). I mean, you might have wanted a singular but you got a plural route instead.
+
+ map.resource('tag','tags', controller="tag",
+ parent_resource=dict(member_name='art', collection_name='art'))
+ # Yeah, parent resources are specified kinda dumb-ly. Would be better if you could pass in the
+ # real parent resource instead of mocking it up with a silly dict. We should file a feature request.
+
+ # I think resources is the right way to go for most things. It ensures all of our actions have the right
+ # methods on them, at least. It does require the use of silly _method="delete" post parameters though.
+
+ # One sticking point though is, it'll happily allow you to add any formatting string you want, like art/1.json
+ # I wonder if there's a way to place requirements on that, or disable it until we actually have formats.
+ # It just serves the same action as usual but with a format argument in the context.
+
+ # map.connect('/art/new', controller='art', action='new')
+ # map.connect('/art/upload', controller='art', action='upload')
+ # map.connect('show_art', '/art/{id}', controller='art', action='show')
+ # map.connect('/art/{id}/tag', controller='art', action='tag')