我已經通過Vanity
gem設置了路徑文件以包含用戶名。如何讓我的Rails 3.1應用程序接受URL中帶有'@'符號的路線?
但是,現在我只能做一個特定的URL--即他們的用戶名。
因此,通過創業板所產生的路線是這樣的:
controller :vanities do
match ':vname' => :show, :via => :get, :constraints => {:vname => /[A-Za-z0-9\-\+]+/}
end
所以說用的用戶名test
有人註冊時,系統自動的將其創建基於vname
對他們的用戶名。但是如果他們轉到mydomain.com/@test
會發生什麼情況,我希望他們最終在相同的路線上,就好像他們剛剛去了/test
一樣。
我該怎麼做?
我知道如何將它添加到我的虛榮名稱的約束中。問題是,當有人註冊時,他們不會在他們的「用戶名」字段中指定「@用戶名」,我也不希望他們。我只想讓他們註冊'test',他們可以做'mydomain.com/test'以及'mydomain.com/@ test'。所以基本上我想要做的就是讓用戶只註冊一個由RegEx'[A-Za-z0-9]'捕獲的常規字符串,但我希望路由器自動處理URL上的@前綴。 – marcamillion
順便說一句,我嘗試這樣做的一種方式是在創建新用戶時,我爲每個用戶創建了兩個虛擬空間 - 一個用「@」和一個不用。然後我在'vanities'控制器的約束中添加了'\ @'異常。但這並不奏效,因爲虛榮寶石只需要每個用戶一個虛榮URL。所以這從來沒有正常工作。 – marcamillion
@marcamillion我不明白,我相信我告訴過你該怎麼做。修改路由中的正則表達式,並將修改params的代碼放在'app/controllers/vanities_controller.rb'中'show'動作的開頭。只需註冊您的用戶而不用@,它就會在路線中自動處理。我們正在談論這個寶石,對吧? https://github.com/jaustinhughey/vanities.git –