2010-10-28 45 views
2

嗨我有一個簡單的軌道問題,我根本無法弄清楚。像標題所說,我想讓我的用戶控制器顯示頁面具有myapp.com/@username url,但我不知道如何執行此操作。我對路線的瞭解必須從根本上有缺陷。myapp.com/@username在軌道路線的URL

我的鏈接現在通常是這樣的:

<%= link_to "#{@user.username}", :controller => "users", :action => "show", :username => @user.username %> 

顯然這是不理想的。我希望他們看起來像這樣。

<%= link_to "#{@user.username}", user_path(@user) %> 

但我不知道該怎麼做。嵌套路線似乎不是這樣。

我是航線設置是這樣的:

map.connect '/:username', :controller => 'users', :action => 'show' 

但這個看似只是讓我做什麼,我現在做的,沒有讓我真正借道那裏。有什麼建議麼? PS這是一個軌道2.3.8應用程序。

回答

3

您的路線是正確的,但是你沒有給它一個名字:

map.USER '/:username', :controller => :users, :action => :show 

從我全部大寫以突出你需要改變什麼。現在你可以撥打user_path(:username => @user.username)

0

在你的路由文件,你需要設置的資源:

map.resources :users 

現在你將有很好的命名路由喜歡user_path(@user)顯示用戶頁面,等等。如果你不希望寧靜的路線,你也可以只創建一個單一命名的路線:

map.user '/users/:id', :controller => 'users', :action => 'show' 

而且user_path(@user)也能發揮作用。

順便說一句,您上面的登錄示例不正確。首先,「:login」被路由引擎解釋爲一個變量,但它沒有被使用。另外,您不希望用戶#顯示頁面成爲登錄頁面。對於初學者來說,顯示哪些用戶?他們還沒有登錄。我希望這有幫助!

+0

是的,我明白如何設置路線。我試圖設置一個特定的路線,你告訴我要做的事情將給我的網址爲: – goddamnyouryan 2010-10-28 04:42:00

+0

myapp.com/@username。你告訴我給你myapp.com/users/@username,這不是我正在尋找的。 – goddamnyouryan 2010-10-28 05:14:29

+0

對不起,我不明白你要做什麼 - 尤其是使用你以前的「:login」參數。另一個答案看起來是正確的。 – 2010-10-28 15:16:52