Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Rails redirect from old URL to a new one that using slug
- module ApplicationHelper
- def product_path(product)
- unless product.category.nil?
- cat = product.category
- if cat.ancestry_depth.eql?(2)
- product_long_path cat.root, cat.parent, cat, product
- else
- product_short_path cat.parent, cat, product
- end
- end
- end
- end
- get "/(*root_id)_(*subcategory_id)_(*category_id)_(*id)" => "products#show", :as => :product_long
- get "/(*root_id)_(*category_id)_(*id)" => "products#show", :as => :product_short
- def show
- @product = Product.find_by_slug params[:id]
- cat = @product.category
- raise NotFound unless cat.slug.eql?(params[:category_id]) and cat.root.slug.eql?(params[:root_id])
- raise NotFound if cat.ancestry_depth.eql?(2) and !cat.parent.slug.eql?(params[:subcategory_id])
- end
- @product = Product.find_by_slug params[:id]
- if @product.nil?
- @product = Product.find params[:id]
- redirect_to @product.redirect_string and return
- end
- def redirect_string
- if category.ancestry_depth.eql?(2)
- "/#{category.root.slug}_#{category.parent.slug}_#{category.slug}_#{slug}"
- else
- "/#{category.parent.slug}_#{category.slug}_#{slug}"
- end
- end
Add Comment
Please, Sign In to add comment