2011-07-20 68 views
2

如果我有一個用戶模型,然後是個人用戶,比如說person1,有沒有辦法讓url:www.myapp.com/person1顯示www.myapp.com/users/person1會是什麼?那會叫什麼?Rails URL question

謝謝!

+0

檢查'HTTP:// guides.rubyonrails.org/routing.html'另外,你的實現將是一個有點曖昧,例如,如果用戶有什麼有一個用戶名'users' ?或用戶名等於您的應用程序中的模型名稱之一? – user482594

+0

太棒了,謝謝! – Connor

回答

4

你應該在你routes.rb文件中定義一個路線:

match "/:user" => "users#show" 

,你會得到params[:user]給出的用戶名。但是你需要知道這種路由可以覆蓋其他定義的路由,因爲它會匹配任何字符串,所以你至少應該在用戶名上定義一些約束。

例如,如果您的用戶名是正規表達式匹配,你可以把它定義爲一個約束

match "/:user" => "users#show", :constraints => { :user => /some-regexp/ } 

,不要忘了設置這條路線作爲最後一個在你的路由文件,否則會發生衝突肯定與其他路線。

閱讀this完全參考

+0

真棒。謝謝法比奧!一旦我能夠,我會加以控制。 – Connor

+0

@ConnorMontgomery:我在答案中增加了一些細節。附:你總是可以接受答案,即使有1個代表;-) – Fabio

+0

是的,我知道 - 它只是說我需要等待7分鐘......現在1分鐘。一旦時間增量完成,我會接受它;) 非常感謝你的澄清! – Connor

0

爲同一件事添加「兩條」路線到您的應用程序。

# Shorter url to show store items by tags 
map.connect '/s/tags', 
    :controller => 'music', 
    :action  => 'show_by_tags' 
map.connect '/music/s/tags', 
    :controller => 'music', 
    :action  => 'show_by_tags'