2

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

def to_param
  permalink
end

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

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

看,当我访问http://railscasts.com/episodes/63时,URL 更改为 /63-name

有什么建议么?

提前致谢

4

2 回答 2

7

看起来 Ryan 正在使用条件重定向到正确的 episode_url。Railscasts 应用程序源代码在 GitHub 上,因此您可以看到他是如何做到的。

正如 Drew 所建议的那样,这在您的情况下应该可以正常工作。

redirect_to @project, :status => 301 if params[:id] != @project.to_param?
于 2009-12-17T13:47:23.907 回答
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?
于 2009-12-17T13:32:08.950 回答