2012-12-31 35 views
0

在我的Rails應用程序中,出於某種原因,我必須將我的URL重定向到所需的URL。在Rails 2中重定向URL

這是我的配置如何設置routes.rb

map.connect 'sample/:action/:id.:format', :controller => 'test'

  1. 它重定向以及當URL是http://example.com/sample。它去Test控制器索引方法。

  2. 當url爲http://example.com/sample/displayname?id=10時,它轉到Test控制器並搜索displayname方法。顯然它不在那裏,所以我得到了「undefined」的錯誤信息。
    在這裏,我想即使URL(http://example.com/sample/displayname?id=10)它足夠去Test控制器的索引方法。

  3. 同樣在地址欄我想URL掩碼。如果我點擊http://example.com/sample/,它應該在地址欄http://example.com/test中重定向&。

我該如何使用Rails-2應用程序(Rails版本2.3.9)來做到這一點?

回答

1

首先,我不建議這樣做。它違背瞭如何在軌道中完成事情的慣例,並且這往往會導致痛苦。我的建議是什麼?只需構建不同的網址,如果你的操作方式讓網站變得輕鬆,那麼你就會很開心的使用它,否則你的生活將會充滿痛苦和痛苦。)

但是,如果你真的想,看起來你不能在軌道中做正則表達式路線。我以爲你可以,但我沒有看到你可以的跡象。然而,你可以做的是...

def method_missing 
    index 
end 

把那個放在控制器中,你想要有這種行爲。它會做你想做的,但它也可能隱藏其他錯誤。無論如何,不​​要說我沒有提醒你。這似乎是一個壞主意......

至於重定向,測試控制器中的before_filter將做到這一點。

before_filter :redirect_if_wrong_path 

def redirect_if_wrong_path 
    if request.path =~ /\/sample/ 
    redirect_to request.path.sub('/sample', '/test') 
    end 
end 
+0

謝謝tehgeekmeister – palani

+0

如果這個答案滿足需要,這是很好的形式去接受它。如果沒有,讓我知道,我會盡我所能幫助你,讓它做到。 – tehgeekmeister

+0

如何做網址掩碼 – palani