问题描述
|
我正在使用Ruby on Rails3。在我的项目中,我有很多类,其中一些类在
routes.rb
文件中声明,如下所示:
#routers.rb
resources :users
namespace \"users\" do
resources :profiles
...
end
通过上面的代码,我可以访问以下URL:
<my_web_site>/users/1
<my_web_site>/users/1/edit
...
# and also
<my_web_site>/users/profiles/1
<my_web_site>/users/profiles/1/edit
...
我想做的是将一些URL请求重定向到其他URL,但是如果我在routes.rb
文件中重定向了所有这些请求,则某些控制器操作将无法正常工作,因为这些请求也被重定向了(GET,POST,...)。
我该如何解决这个问题?
P.S .:我知道(也许)我的路由器陈述有误,但此刻我也在寻找一种简单的解决方案。但是,欢迎您提出有关此问题的建议。
解决方法
好的,看起来您想设置一个重定向,该重定向仅适用于给定路径和一个HTTP动词。这似乎是您要寻找的:
#routers.rb
resources :users
match \"/users/profile/:id\" => redirect(\"/profiles/%{id}\"),:via => :get
namespace \"users\" do
resources :profiles
...
end
基于此路由,每一个指向“ 6”的“ 5”请求都将被重定向到“ 7”,而任何“ 8”,“ 9”或“ 10”请求均不会受到重定向。
仅当请求方法对给定值进行运算时,ѭ11参数将执行重定向。它还接受动词数组,因此,例如,您可以重定向:via => [:post,:put]
如果您添加有关所需的特定重定向的更多详细信息,我们可以创建一个更好的示例。
,查看这篇精彩的文章,它将对您有所帮助:
路由
您可以在“ 0”中定义需要重定向到的网址。
例如:match \'some_url/:id\' => redirect_to(\'/path_to_redirect\')