3
我想弄清楚如何生成AngelList使用相同的路線。如果你看看他們的網址,你會看到他們是以下幾種形式:在Rails中,如何爲AngelList這樣的任意字符串生成路由呢?
- angel.co/
<
用戶名> - angel.co/
<
標籤> - angle.co/
<
鏈接到內部頁面>
你會如何在Rails 3中做到這一點?
我想弄清楚如何生成AngelList使用相同的路線。如果你看看他們的網址,你會看到他們是以下幾種形式:在Rails中,如何爲AngelList這樣的任意字符串生成路由呢?
<
用戶名><
標籤><
鏈接到內部頁面>你會如何在Rails 3中做到這一點?
這是我會怎麼做這個(可能不是最有效的,但將工作)
創建一個名爲URLRouter
在配置/ routes.rb中
match ':object' => 'URLRouter#show'
這是一個虛擬控制器將調用URLRouter控制器中的SHOW操作,並將它們請求的東西放入params [:object]中。
在這種URLRouter控制器,將下面的代碼:
if User.find_by_username(params[:object])
render "users/show/#{params[:object]}"
end
重複這個if語句爲每個不同的型號。第一個模型優先於第二個模型,優先於第三個模型等。
請注意,您需要確保您不能創建與用戶名具有相同值的標記,並且您可以創建一個與內部鏈接相同的用戶名,等等。否則,最終可能會出現無法訪問的頁面(bc URL可能會路由到不同於您預期的模型)。
另一個重要的注意事項是,如果你以這種方式修改你的路線,我會把這個匹配語句放在其餘的之後。