Rails友好的URL

时间:2009-12-17 12:50:35

标签: ruby-on-rails permalinks seo

我有一个名为Project的模型,我已经将“to_param”方法定义为:

def to_param
  permalink
end

我正在使用这个永久链接插件github.com/febuiles/make_permalink所以当我调用p.permalink时它会生成id-name。

问题在于,当我在网络浏览器中输入TYPE / projects / 1时,URL不会更改为/ projects / 1-name。我怎样才能做到这一点?

请注意,当我转到http://railscasts.com/episodes/63时,网址会更改为/ 63-name

有什么建议吗?

提前致谢

2 个答案:

答案 0 :(得分:7)

看起来Ryan正在使用条件重定向到正确的episode_url。 Railscasts应用程序源代码在GitHub上,因此您可以see how he does it

与Drew建议的相似,在你的情况下这应该可以正常工作。

redirect_to @project, :status => 301 if params[:id] != @project.to_param?

答案 1 :(得分:4)

他们最有可能使用friendly_id gem或类似的东西:

http://github.com/norman/friendly_id/

重要的部分是:

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