【问题标题】:Custom URL in ruby on rails from database来自数据库的 ruby​​ on rails 中的自定义 URL
【发布时间】:2016-11-28 05:00:34
【问题描述】:

我的问题与Custom url in ruby on rails有关

但是,我希望用户能够动态选择他们的页面名称。我不想硬编码 route.rb 文件中的页面信息(获取 'my_page_here', :to => 'home#index'),因为我的网站允许用户为他们的业务创建一个独特的页面并选择 URL .例如:www.mallstores.com/mycoolbusiness 实际上会转到 www.mallstores.com/action/public/stores/12345

是否可以在用户从我的网站创建新页面时动态添加/修改 route.rb 文件中的条目?

【问题讨论】:

    标签: ruby-on-rails routing


    【解决方案1】:

    我认为您不需要动态修改路线。您需要使用routes dynamic segments 所以基本上你应该在routes.rb 的底部添加以下行。

    get '/:store_name(.:format)', to: 'public/stores', as: 'public_stores'

    重要提示 你必须把这条线放在你的底部routes.rb,这样它就不会影响其他路线,它将是最后一条要测试的路线。

    基本上,当使用导航到 http://yourdomain.name/store_name 时,routes.rb 会将请求发送到 public_controller 然后发送到 stores 操作中的 stores 操作,您可以从 url 中获取 store_name 并在数据库中查看它然后将其呈现给请求者。

    您还可以使用friendly_id gem 来增强流程并确保商店名称的唯一性。


    另一种技术

    您可以将以下代码放入您的routes.rb 文件中

    Store.all.each do |store|
      get "/#{store.name.parameterize}", to: 'public#store', store_id: store.id
    end
    
    • 您必须确保商店名称是唯一的。
    • 您还应该将其放在页面底部,以确保不会发生冲突。

    但我更喜欢第一条规则,因为它更干净,如果你有百万商店怎么办。那么这会降低您应用的性能。

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 2016-12-16
      • 1970-01-01
      • 2014-07-27
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 2021-04-19
      相关资源
      最近更新 更多