How to get a nice url hierarchy with slugs and acts_as_t

Emmek on Rails wrote:

I have a model Page in my application that acts_as_tree. I want this
model to keep whole structure of website.

Then I would strongly suggest awesome_nested_set instead of
acts_as_tree. It makes it possible to use the DB *much* more
efficiently.

I have some root nodes: home,
contact, articles, etc. and the possibility of adding children to them.

I want to access these pages using slugs (Page model and new/edit forms
have such attribute/field). In show action of pages controller:

    if params[:slug]
      @page = Page.find_by_slug(params[:slug])
      raise ActiveRecord::RecordNotFound, "Page not found" if @page.nil?
    else
      @page = Page.find(params[:id])
    end

And routing:

  map.connect ':slug', :controller => 'pages', :action => 'show'

Everything works well at the first level but how to access children
pages using hierarchy of the tree and slugs?

I'm not sure. You might need to use a *glob route for the page path,
then do your own parsing.

Best,

Marnen Laibow-Koser wrote:

Emmek on Rails wrote:

I have a model Page in my application that acts_as_tree. I want this
model to keep whole structure of website.

Then I would strongly suggest awesome_nested_set instead of
acts_as_tree. It makes it possible to use the DB *much* more
efficiently.

Actually, on second thought, this might be a good use case for a
materialized path in the DB. Then you could just do find_by_path to
retrieve any page at any depth.

Best,