2014-03-26 52 views
0

用戶的顯示操作URL是「domain.com/users/(:id)」。我怎樣才能把它變成「domain.com/(:id)」?根URL下的用戶配置URL

(我用的,如果它不作任何區別制定。)

我說這在我的路線,但它不工作。

get '(:username)' => 'users#show' 

想不通這是怎麼可能在Rails路由guide


更新

我把get "/:username" => 'users#show'在我的路線文件的底部。當我瀏覽到http://localhost:3000/testuser我得到這個在我的日誌:

Started GET "/testuser" for 127.0.0.1 at 2014-03-27 12:05:32 +0000 
Processing by UsersController#show as HTML 
    Parameters: {"username"=>"testuser"} 
    User Load (0.7ms) SELECT "users".* FROM "users" WHERE "users"."username" IS NULL LIMIT 1 
Redirected to http://localhost:3000/ 
Completed 302 Found in 5ms (ActiveRecord: 0.7ms) 

testuser的確實存在。但由於某種原因,無法重定向到主頁。如果我嘗試去http://localhost:3000/users/testuser,用戶的show動作加載正常。

回答

1

get "/:username" => 'users#show' 

上述根 'SOME_PATH'

更新

從上往下的路徑文件的匹配,讓我們說,你現在有一個路線

get "/search" => "controller#method" 

如果你把你的「/:username」那麼你的應用可能會認爲你正在試圖找到一個用戶名爲「search」的用戶,所以在你的路由列表底部輸入「/:username」=>'users#show'即可。

+1

你對此的回答一些詳細點嗎? – Daniel

+0

嗨Ophion,我更新我的答案,希望它有幫助。 –

0

我不得不把路線get "/:id" => 'users#show'在我的routes.rb文件

+0

這就是我的答案試圖說的。不同之處在於你的控制器,你想使用params [:id],但對於我的回答,你可以使用params [:username],你會得到相同的結果。因爲在你的問題中,你使用/:username,所以我想你會在你的控制器中使用params [:username]。畢竟,你得到了關鍵,恭喜。 –