Personalized URL -- route.rb.

Hello Friends, I want to configure personalized url for e.g. - http://localhost:3000/xyz here xyz is a database value. Now for the same i have implemented the following syntax inside my route.rb file

map.url ‘/:name’, :controller => ‘controller_name’, :action => ‘action_name’

But now when ever i run my application the action_name.rhtml appears whereever i click.

So guys really confused any suggestion from your side?

Thanks Abhi

Abhi,

Do you want that off of the root path or something like http://domain.com/people/robbyrussell ?

These are generally referred to as permalinks.

Robby

Hey Robby Thanks for reply i want just after the domain name – http://domain.com/robbyrussell

instead of http://domain.com/people/robbyrussell

And the robbyrussell will be a dynamic value…

Though i tried the following code inside the route.rb

map.url ‘/:name’, :controller => ‘controller_name’, :action => ‘action_name’

It’s work but for ever page the above mentioned action is getting called :frowning:

Thanks Abhishek

Have you placed it at the end of your routes.rb file?

It's easier if you show up some real code.

That sounds like its working.

  map.name "/:name", :controller => "people", :action => "show"   map.connect ":controller/:action.:format"

will see a url like "http://localhost:3000/anything" and match it to the first route. it will do the same for "http://localhost:3000/admin"

and hence always try and grab PeopleController#show

what you'd need to do is declare any important routes before that

eg.

  map.admin "/admin", :controller => "admin"   map.name "/:name", :controller => "people", :action => "show"   map.connect ":controller/:action.:format"

this will make sure that "http://localhost:3000/admin" goes to the right place.

My suggestion is if you're just starting out in rails, keep it simple.

  http://localhost:3000/people/Abishek

looks just as nice, but is much simpler for a newbie.

Enjoy.

Make sure you put this near the bottom of routes.rb.

map.person '/:name', :controller => 'people', :action => 'show'

Then in your view...

<%= link_to "Person Name", person_path("jimmy") %>

I don't think this is the ideal situation, but it'll do what you're looking to have done. Really you should be using a named resource, and set the "to_param" value in your person model to "name".

Hey thanks guys its working i put the line @ the bottom… Regards Abhishek Shukla