2010-02-16 28 views
11

我要複製的Twitter個人資料頁面,並有一個用戶名「http://www.my-app.com/username」一個URL,而我可以手動鍵入該到地址欄並導航到個人資料頁,我不能鏈接到自定義網址。定製軌網址與用戶名

我認爲這個問題是在路線 - 這裏是我的routes.rb中的代碼

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

另外,我有QuestionAnswer模型,我想,像這樣的自定義URL鏈接到他們:

http://www.my-app.com/username/question/answer/2210

+0

你不需要更好地構架它,只是更簡潔 – 2010-02-16 00:29:21

回答

12

有什麼不對您的路線。只要記住在定義所有其他路線後最後定義它。我還建議使用RESTful路由,並且只有當您希望更好看的URL使用命名路由時。請勿使用map.connect。這裏有一些good reading about Rails routes

這裏是如何可以看:

map.resources :questions, :path_prefix => '/:username' do |question| 
    question.resources :answers 
end 

map.resources :users 

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

只是一個草案,可以延長。

4

要創建你需要定義你的用戶模型(read hereto_param方法的URL。

class User < ActiveRecord::Base 
    def to_param 
    username 
    end 
end 
0

我已經使用這樣

在View部分

portfolio.user.name,:ID =>圖集)%>

和rout.rb

地圖。 show_portfolio「組合/:用戶名」,:動作=>「show_portfolio」,:控制器=>「組合」

1

我知道這個問題是舊的,但它會幫助使meone。

你可以嘗試以下。我用它在一個rails 4項目中,並且所有這些似乎都很棒。究其原因,是as: :admin我也有一個resources posts超出這個範圍。它將在助手呼叫中添加admin,例如admin_posts_path

scope ":username", module: 'admin', as: :admin do 
    get '', to: 'profiles#show' 
    resources :posts 
end