来自数据库的ruby on rails中的自定义URL

时间:2016-07-24 23:18:09

标签: ruby-on-rails routing

我的问题与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文件中动态添加/修改条目?

1 个答案:

答案 0 :(得分:2)

我认为您不需要动态修改路由。你需要使用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操作,您可以从中获取store_name url并在数据库中查看它,然后将其呈现给请求者。

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

另一种技术

您可以将以下代码放在routes.rb文件

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

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