我正在试图弄清楚如何生成与AngelList使用的相同路线。如果您查看其网址,您会看到它们具有以下形式:
<
用户名&gt; <
标签&GT; <
指向内部网页&gt; 你会如何在Rails 3中做到这一点?
答案 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可能会路由到与您预期不同的模型)。
另一个重要的注意事项是,如果你以这种方式修改你的路线,我会把这个匹配声明放在其余部分之后。