Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 重定向HTTP请求,避免控制器操作问题_Ruby On Rails_Ruby_Ruby On Rails 3_Redirect_Controller - Fatal编程技术网

Ruby on rails 重定向HTTP请求,避免控制器操作问题

Ruby on rails 重定向HTTP请求,避免控制器操作问题,ruby-on-rails,ruby,ruby-on-rails-3,redirect,controller,Ruby On Rails,Ruby,Ruby On Rails 3,Redirect,Controller,我正在使用RubyonRails3。在我的项目中,我有许多类,其中一些类在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

我正在使用RubyonRails3。在我的项目中,我有许多类,其中一些类在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文件中我重定向了所有这些URL,一些控制器操作将无法正常工作,因为这些请求也被重定向到GET、POST等

我如何解决这个问题


注:我知道我的路由器声明可能是错误的,但目前我也在寻找一个简单的解决方案来解决这个问题。不过,欢迎对此问题提出建议。

查看这篇精彩的文章,它将帮助您:

您可以在routes.rb中定义需要重定向到的URL。
例如:匹配'some_url/:id'=>redirect_to'/path_to_redirect'

确定,看起来您想要设置一个重定向,该重定向将只应用于给定路径和一个HTTP谓词。这似乎就是您要寻找的:

#routers.rb
resources :users

match "/users/profile/:id" => redirect("/profiles/%{id}"), :via => :get

namespace "users" do
  resources :profiles
  ...
end
基于此路由,命中/users/profile/1的每个GETrequest都将被重定向到/profiles/1,而任何POST、PUT或DELETE请求都不会被重定向

:via参数仅在请求方法计算给定值时才执行重定向。它还接受动词数组,因此,例如,您可以重定向:via=>[:post,:put]


如果您添加有关您需要的特定重定向的更详细信息,我们可以创建一个更好的示例。

您可以添加一些您需要的重定向和无法正常工作的重定向的更详细示例吗?@NeX此时所有URL工作属性,因为我没有更改任何内容,但。。。我会更新这个问题。