【问题标题】:How to update routes.rb (dynamic urls)如何更新 routes.rb(动态 url)
【发布时间】:2013-04-11 02:14:52
【问题描述】:

我的 routes.rb 中有这段代码

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

所以 url 可以像 http://site/url 而不是 http://site/shops/1

& 确实有效,但我必须在添加新商店后重新启动服务器。

也许,有一种方法可以在不重新启动的情况下执行此操作?或者,其他方式?

谢谢

【问题讨论】:

  • shop.url 中有哪些内容?
  • 字符串。例如 -> site/mycoolshop。用户可以为他的商店写任何网址。
  • 那么为什么不使用简单的/:url 路由,索引urls,然后根据:url 查找店铺呢?你必须小心路线顺序、:url 和其他路线之间的冲突,以及如果你允许. 对路线的限制。
  • 感谢您的 cmets。我不太擅长路由:) 对不起,你能给我举个例子吗:) 在 routes.rb 中应该怎么写? :)

标签: ruby-on-rails ruby routes


【解决方案1】:

这是一个旧的轨道演员,但你会在那里找到答案的元素

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

作为一般建议:你不需要在你的路由中做这种循环,研究 Rails 路由提供的工具并使用它们

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

【讨论】:

  • 酷 :) 谢谢。它的工作,我怎样才能从网址中删除“商店”,现在它是site/shops/1-mycoolshop 可以像site/1-mycoolshop 吗?
  • 是的,我不确定(因为它取决于您的路由配置、嵌套等),但我会使用这样的东西:match '/:shop' => 'shop#show'(以及在您的 ShopController#shop您将在 params[:shop] 中收到一个值)。请务必将此行放在路由块的最后,否则它将与任何其他 URL 匹配。你真的应该学习我在答案中链接的 Rails 指南,你会对路线感到更舒服
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多