2011-05-26 109 views
0

我on Rails的3.使用Ruby在我的项目我有很多类和一些人在routes.rb文件中像下面列示:重定向避免控制器操作HTTP请求发出

#routers.rb 
resources :users 

namespace "users" do 
    resources :profiles 
    ... 
end 

与上面的代码我可以访问以下网址:

<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文件重定向我所有这些,一些控制器动作s将无法正常工作,因为这些请求也被重定向(GET,POST,...)。

我怎样才能解决这个问题呢?

P.S:我知道(也许)我的路由器陈述是错误的,但此刻我正在寻找一个简单的解决方案也是问题。不过有关此事的建议值得欢迎。

+0

能否请您补充一点,不能正常工作,你需要的重定向和重定向的一些更详细的例子吗? – robertodecurnex 2011-05-26 14:58:27

+0

@NeX这时所有的URL工作的性质,因为我并没有什么改变,但是......我会更新的问题。 – user502052 2011-05-26 14:59:59

回答

0

好吧,看起来像你想设置一个重定向,将只适用于给定的路径和只有一个HTTP动词。这似乎是你在找什么:

#routers.rb 
resources :users 

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

namespace "users" do 
    resources :profiles 
    ... 
end 

在此基础上每航线要求GET击中/users/profile/1将被重定向到/profiles/1而任何POSTPUTDELETE请求将不会被痛苦的重定向。

:via PARAM将execure重定向只有如果请求方法的数学给定值。它还接受一系列动词,例如,您可以重定向:via => [:post, :put]

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

0

检查这篇大文章,它会帮助你:
routing

你可以定义你需要重定向到routes.rb网址。 例如:
match 'some_url/:id' => redirect_to('/path_to_redirect')

+0

我看过那篇文章,但我不知道该怎么做。 – user502052 2011-05-26 15:05:20