2014-01-10 49 views
1

是否有正確的方法將Devise設置爲重定向用戶配置文件可通過root/:username訪問?Rails Devise root /:用戶名url url

我知道如何設置設計來響應root/user/:username,但不知道如何隱藏/取消/user路徑。

謝謝!

+0

您可以使用friendly_id gem來隱藏用戶的id。 –

+0

謝謝你的回答!只是爲了重定向/ urlhiding,或許比爲其添加gem更簡單的方法? – Patient55

回答

2

有網址,如:domain.com/jack其中jack是用戶名,您需要:

的routes.rb

get '/:name' => 'users#show', as: :profile 

users_controller.rb

def show 
    User.find_by_name(params[:name]) 
end 

鑑於

<%= link_to 'profile', profile_path(user.name) %> 

或控制器動作

redirect_to profile_path(user.name) 
+0

非常感謝。這實際上是我的想法,但通過這樣做,所有其他靜態頁面(如root.com/about)將被視爲一個:用戶名。手動轉義他們並不是很聰明 – Patient55

+0

你會希望實際上像'/ contacts/about_us/whatever_else_page'這樣的頁面轉義,在其他情況下,你將擁有'posts resource',例如在.com/posts處打開url應該看起來像對於路線文件所需的'posts#index'動作:'resources:posts'。此外,我發現了幾次,您在文件中聲明路線的順序將對您的應用程序產生影響。例如:在資源之前/之後聲明'get'/:name'=>'users#show'':帖子可能會對應用程序產生不同的影響,就像試圖首先打開一個路線,然後如果未定義路線千斤頂將進入profile_path。 – rmagnum2002

+0

這非常有趣,非常感謝你的細節。我想你的意思是在最後一句話中的「post_path」。所以我設置每個獲得靜態與逃生:真,和資源用戶在第一(他們是最小的基地,因爲用戶has_many職位等)。我理解了一切嗎? – Patient55