我有一个名为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
有什么建议吗?
提前致谢
答案 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?