代码之家  ›  专栏  ›  技术社区  ›  Hock

Rails友好的URL

  •  2
  • Hock  · 技术社区  · 15 年前

    我有一个名为project的模型,我定义了“to_param”方法,如下所示:

    def to_param
      permalink
    end
    

    我正在使用这个permalink插件github.com/febuiles/make-permalink,所以当我调用p.permalink时,它将生成ID名称。

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

    你看我去的时候 http://railscasts.com/episodes/63 URL更改为/63名称

    有什么建议吗?

    提前谢谢

    2 回复  |  直到 13 年前
        1
  •  7
  •   Michael Richards    13 年前

    看起来Ryan正在使用一个条件重定向到正确的插曲URL。RailsCasts应用程序源代码位于GitHub上,因此您可以 see how he does it .

    与Drew的建议类似,在您的情况下,这应该可以很好地工作。

    redirect_to @project, :status => 301 if params[:id] != @project.to_param?
    
        2
  •  4
  •   Drew Blas    15 年前

    他们很可能使用友好的宝石或类似的东西:

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

    重要的是:

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