2011-05-26 113 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