views:

302

answers:

2

Hello, I have a model called Project and I've defined the "to_param" method as this:

def to_param
  permalink
end

I am using this permalink plugin github.com/febuiles/make_permalink so when I call p.permalink it will generate id-name.

The problem is that when I TYPE /projects/1 in my web-browser the URL doesn't change to /projects/1-name. How can I achieve that?

Look that when I go to http://railscasts.com/episodes/63 the URL changes to /63-name

Any suggestions?

Thanks in advance

+2  A: 

They are most likely using the friendly_id gem or something similar:

http://github.com/norman/friendly%5Fid/

The important part is:

@post = Post.find(params[:id])
redirect_to @post, :status => 301 if @post.has_better_id?
Drew Blas
+5  A: 

It looks like Ryan is using a conditional redirect to the proper episode_url. The Railscasts application source code is on GitHub, so you can see how he does it.

Similarly as Drew suggests, this should work fine in your case.

redirect_to @project, :status => 301 if params[:id] != @project.to_param?
Mike Richards
Thank you!! I can't give you reputation but THANK YOU!
Hock