2016-07-24 112 views
0

我的問題是有關Custom url in ruby on rails自定義URL在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文件中的條目從我的網站的新頁面?

回答

2

我認爲你不需要動態修改路線。您需要使用routes dynamic segments ,所以基本上應該在routes.rb的底部添加以下行。

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

重要提示 您必須將這一行的,你routes.rb底部,所以它不會影響到其他航線,這將是最後的途徑進行測試。

基本上當使用導航到http://yourdomain.name/store_nameroutes.rb將請求發送到public_controller然後在賣場行動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 
  • 您必須確保商店名稱是唯一的。
  • 您還應該將其放在頁面底部以確保不會發生衝突。

但我更喜歡第一條規則,因爲它更乾淨,如果你有像百萬商店一樣的東西。那麼這會降低你的應用程序的性能。