如何解决重定向HTTP请求以避免控制器动作问题
| 我正在使用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\')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。