/archives/:year/:month/:day routes with REST?

Hi folks.

I’m looking to emulate a feature I have implemented in Rails routing of
old, where the above URL could be used as so…

By year: http://douglasfshearer.com/blog/2007

By month: http://douglasfshearer.com/blog/2007/5

By Day: http://douglasfshearer.com/blog/2007/5/28

I’ve had a few attempts at this, but have so far failed to figure it
out.

Any suggestions?

I’d recommend against this for usability reasons and seo reasons…but
if you are really set on it there is an example in the agile book.
Though that uses traditional routing – restful may be a bit harder…

The domain.com/blog/id-permalink style makes much more sense and will
get your more google-fu.

  • rob

On 5/29/07, Douglas S. [email protected] wrote:

By Day: http://douglasfshearer.com/blog/2007/5/28

why REST? will you be doing CRUD operations on them? if it’s just an
archive, then isn’t the routing you have already sufficient?

On May 29, 8:27 am, Douglas S. [email protected]

Rob S. wrote:

The domain.com/blog/id-permalink style makes much more sense and will
get your more google-fu.

I already have this implemented in old style routes, with named
permalinks for my posts.

The dated archive is to save having to paginate through 100s of posts,
and to make searching a little easier.

if you still want REST, (and i’m a rest noob so this may be very
wrong), perhaps something like

mydomain.com/blog/year/2007/month/5/day/28

On May 29, 11:48 am, Douglas S. <rails-mailing-l…@andreas-

Jeff Emminger wrote:

why REST? will you be doing CRUD operations on them? if it’s just an
archive, then isn’t the routing you have already sufficient?

A very good point.

I guess I just wondered if it was at all possible.

Jeff Emminger wrote:

mydomain.com/blog/year/2007/month/5/day/28

That would work, using nested resources. Have decided I was being
stupid, and have re-implemented my map.connect.

Ta.

On May 29, 11:50 am, Douglas S. <rails-mailing-l…@andreas-
s.net> wrote:

Jeff Emminger wrote:

mydomain.com/blog/year/2007/month/5/day/28

That would work, using nested resources. Have decided I was being
stupid, and have re-implemented my map.connect.

If it’s not too late, let me throw in my two cents :slight_smile:

REST != map.resources

This is a common perception, because DHH’s posts about REST usually
included instructions about map.resources, a feature new to Rails 1.2
that made routing easier in some cases.

But you can have a 100% RESTful application just by using map.connect,
too. After all, map.resources is just shorthand for a bunch of named
routes (and named routes are just map.connect statements).

The url part after blog/ identifies your resource, right? So you can
be RESTful:

map.connect /blog/:year:/:month/:day, :controller => :blog, :action
=> :index

Then your BlogController has:

def index
month = params[:month]
year = params[:year]
day = params[:day]

@entries = # get entries here
end

I’m simplifying, but hopefully you get the idea. You can have a
RESTful architecture whether you use map.connect or map.resources.

Jeff

Jeff C. wrote:

You can have a
RESTful architecture whether you use map.connect or map.resources.

Awesome reply Jeff, and a point very well made.

I think that you should make a blog entry of that, you have the spiel
down to a tee.

Cheers.

Dougal

I really enjoyed the article. It proved to be Very helpful to me and I

am sure to all the comment here!
http://www.dealsourcedirect.com/ion-tape2pc.html

Awesome reply Jeff, and a point very well made.

Thanks Douglas! Glad to help.

I think that you should make a blog entry of that, you have the spiel
down to a tee.

softiesonrails.com/tags/rest

:slight_smile: