在Rails中,如何生成像AngelList这样的任意字符串的路由呢?

时间:2011-07-07 22:29:04

标签: ruby-on-rails ruby ruby-on-rails-3

我正在试图弄清楚如何生成与AngelList使用的相同路线。如果您查看其网址,您会看到它们具有以下形式:

  • angel.co / <用户名&gt;
  • angel.co / <标签&GT;
  • angle.co / <指向内部网页&gt;
  • 的链接

你会如何在Rails 3中做到这一点?

1 个答案:

答案 0 :(得分:2)

以下是我将如何做到这一点(可能不是最有效的,但会起作用)

创建名为URLRouter的虚拟控制器

在config / routes.rb

match ':object' => 'URLRouter#show'

这将在您的URLRouter控制器中调用SHOW操作,并将他们请求的内容放入params [:object]。

在该URLRouter控制器中,放置以下代码:

if User.find_by_username(params[:object])
    render "users/show/#{params[:object]}"
end

对每个不同模型重复此if语句。第一个模型优先于第二个模型,它将优先于第三个模型等。

请注意,您需要确保无法创建与用户名具有相同值的标记,并且无法创建与内部链接相同的用户名,依此类推。否则,您最终可能会遇到无法访问的页面(bc,URL可能会路由到与您预期不同的模型)。

另一个重要的注意事项是,如果你以这种方式修改你的路线,我会把这个匹配声明放在其余部分之后。