2013-04-11 53 views
1

我有這樣的代碼在我的routes.rb如何更新routes.rb文件(動態URL)

shops = Shop.all 
shops.each do |shop| 
match "/#{shop.url}" => 'shops#show', :id => shop.id 
end 

那麼URL可以是類似於http://網站/ URL &不喜歡的http://網站/商店/ 1

&它確實有效,但我必須在添加新商店後重新啓動服務器。

也許,有沒有辦法做到這一點,而不重新啓動?或者,還有其他方法?

謝謝

+0

的東西種類是什麼'shop.url'? – 2013-04-11 02:50:36

+0

字符串。例如 - > http:// site/mycoolshop。用戶可以爲他的商店編寫任何網址。 – whitesiroi 2013-04-11 02:57:11

+0

那麼爲什麼不使用一個簡單的'/:url'路線,索引'url's,然後根據':url'查找商店?如果你允許使用'.',你必須小心路由順序,':url'和其他路由之間的衝突,以及對路由的限制。 – 2013-04-11 03:01:52

回答

1

這是一個老軌投,但你會發現答案有

http://railscasts.com/episodes/63-model-name-in-url

的元素作爲一般的提醒:你不需要做這樣的循環在你的路由,通過學習路由的軌道提供了工具,並利用它們

http://guides.rubyonrails.org/routing.html

+0

很酷:)謝謝。 它的工作,我怎麼能從網址刪除「商店」,現在它是http://網站/商店/ 1-mycoolshop它可以像http:// site/1-mycoolshop? – whitesiroi 2013-04-11 03:49:44

+1

是的,它可以,我不知道(因爲它取決於你的路由配置,嵌套等),但我會用這樣的東西:'match'/:shop'=>'shop#show''(和在ShopController#商店中,您會收到params [:shop]中的值)。只要確保將此行放在路由塊的最後,或者它將匹配任何其他URL。你應該真的學習我在答案中鏈接的導軌指南,你會感覺更適合路線 – Benj 2013-04-11 08:56:59