2013-04-11 83 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