2012-01-16 59 views
1

我有一個生產Rails 2.3.5的網站,我希望將模型的名稱更改爲在URL中看起來更好的東西。我知道最簡單的方式做,這是在routes.rb中這樣的:在Rails中爲模型創建別名(即第二個名稱)

map.resources :announcements, :as => :posts 

不過,我需要支持舊名稱,以及因爲我們是生產,不能有死鏈接。只要使用':as'不會削減它。

基本上,我正在尋找一種方法來重定向使:

http://mysite.com/announcements/23 

重定向到

http://mysite.com/posts/23 

這也許可以通過Apache要做到這一點,但我似乎無法圖出重寫規則。我想也許routes.rb會是一個更簡單的方法。也沒有運氣。

謝謝!

回答

0

我最終找到了一個很好的解決方案。

我在我的routes.rb中添加了:as => :posts,這使得所有的鏈接助手都可以創建鏈接到新的URL。然後我想出了一個mod_rewrite規則來處理重定向,所以在互聯網上沒有任何斷開的鏈接。這裏是我添加到我的Apache配置:

RewriteEngine On  
RewriteRule ^/announcements(.*) /posts$1 [R=301,L] 
0

取決於我們所說的「重定向」 - 聽起來最有效的途徑可能是帶上您的帖子控制器並添加重定向到通告,並讓公告控制器處理頁面。所以,在PostsController

def index 
    redirect_to 'announcements#index' 
end 

等等。只要您願意,您可以爲舊鏈接提供傳統支持,如果您不再需要它,您可以放下整個Posts Controller。

+0

感謝您的建議!我最終找出了一個簡單的mod_rewrite規則,我將在下面發佈。 – 10flow 2012-05-05 20:24:09

0

如何添加路線兩次。用:as選項而沒有?

//routes.rb 
map.resources :announcements 
map.resources :announcements, :as => :posts