我可以通过两种方式过滤我网站上的产品:
www.expamle.com/products?category=cars&brand=hot_wheels
或:
www.expamle.com/products/car/hot_wheels
最佳做法是什么?为什么?
如果我应用了第二个解决方案,我怎么知道传递的参数的类型是category
还是brand
?
感谢。
答案 0 :(得分:3)
如果它保持原样,第二个选项,到目前为止。不只是为了优雅而是为了SEO。
话虽这么说,你开始第3和第4次争论的那一刻,你显然需要搜索。您是选择使用全文搜索还是使用带复选框的高级搜索,这取决于您的项目。我倾向于全文搜索,但如果你想坚持你的设计,不再添加任何参数,这就是它的样子:
您将根据您设置的路线获取参数。
# config/routes.rb
get 'products/:category/:brand', to: 'products#index'
# app/controllers/products_controller.rb
def index
@products = Products.where(category: params[:category]).where(brand: params[:brand])
end
如果类别和品牌都是可选的且不依赖,您可以将类别和品牌加入Tag模型。更加灵活。 。的产品(/:标签(/:标签(/:标签)))'