2012-01-07 53 views
0

我想,而不是/ user /:id我想要的默認用戶路線是/用戶:created_at我能夠得到/用戶:ID工作(沒有第二/),但是當我嘗試做:created_at我得到一個錯誤。定製用戶在Rails顯示路線

有誰知道如何解決這個問題?另外,即使我有match 'users:id', :to => 'users#show', :as => :user, :via => :get/user/1仍然是有效的鏈接,因爲我的config/routes.rb中有resources :users。有沒有辦法在rails編譯resources :users時刪除default/user /:id?

+1

這不難做你在問什麼,但是,創建在不是資源的唯一標識符。如果可以,您應該考慮使用其他字段。 – jdeseno 2012-01-07 21:08:34

+0

哦,該領域必須是獨一無二的? – Vasseurth 2012-01-09 04:03:41

+1

如果兩個項目的創建時間相同; resource/foo /:created_at引用哪個項目?它不*有*是唯一的,但是,應該是這些URL代表單個資源(而不是所有創建的項目的集合)。 – jdeseno 2012-01-09 16:24:29

回答

1

如果我理解正確的話,你可以使用to_param:http://apidock.com/rails/ActiveRecord/Base/to_param

所以,如果你在你的用戶模型例如

使用

def to_param 
    "#{first_name}_#{last_name}" 
end 

然後user_path(@user)將產生/用戶/ planet_pluto

,以防止由map.resources產生路線簡單地使用:除了

map.resources :user, :except => [:show] 

希望可以幫到

+0

由於某些原因,這不會改變路線。 – Vasseurth 2012-01-10 22:57:08

+0

如果您運行耙路線,您仍然可以看到正在生成的用戶#show的路線? – 2012-01-11 11:59:00

+0

不,但我的意思是路由不是從/ user /:id – Vasseurth 2012-01-11 19:16:53