2010-07-16 46 views
0

我是Amit。我是Rails新手。请原谅我,如果问任何愚蠢的 问题。在ROR中的URL重写

我已经读过这篇文章。我也患有相同的 问题。

我的网站的网址是这样的:的locahost:3000 /用户/编辑/ 30

我不想显示控制器:用户操作:编辑。

我想重新写(重写)的URL或我想保持网址为 http://127.0.0.0:3000/30/而已。(30是用户ID)

我没兴趣,显示控制器(用户)和动作(编辑)

我总的意图是隐藏(隐藏)和重写(REWRING)的URL ,主要我想隐藏与控制器和行动 主要..

回答

0

对于大多数应用程序,我一直使用的标准:

/script.cgi?arg1=foo&arg2=bar 

现在很明显/用户/编辑/埃里克对于涉及编辑“Eric”用户的 的URL看起来好多了。但是如何在 多个项目下解决问题。例如,如果我想删除一组用户。我 可能有这样的事情在旧的方式:

/user/delete.cgi?id=3&id=5&id=7 

或更可读的格式,我们可以有:

/user/delete.cgi?username=eric&username=john&username=paul 

当然,这是假设用户名是唯一的。 :)这样看来,我 想是这样的:

/user/delete/eric/john/paul 

这使得明显发生了什么是URL发生。但我如何 生成?如果一个行动接收到这个请求,这如何让 解析,所以我有这样的:

@delete_usernames ===>>> [ 'eric', 'john', 'paul' ] 

这样,那么我就可以加载这些用户并删除它们。我知道 ActionController提供了一些处理URL重写的方法 但我不确定如何最好地使用它们。任何帮助或指针大大 赞赏。

2

想要以这种方式使用路由是一个奇怪的要求,因为它会使您很难扩展此方案以支持应用程序中的其他操作。 Rails惯例的好处之一就是你通常不必担心(往往是微不足道的)应用程序细节,或者必须对它们有强烈的意见。

但你真的想,你可以将它添加到您的config/routes.rb

ActionController::Routing::Routes.draw do |map| 
    map.connect "/:id", :controller => "users", :action => "edit" 
end 

请记住,这有限的方案将意味着你只能到编辑行动路线。我建议不是非常有用。

+1

我同意@bjg。我想如果你尝试访问http://127.0.0.0:3000/logout,它会重新路由到用户/编辑/注销假设登出为身份证 – Addy 2010-07-16 14:14:48