0

我可以通过两种方式过滤我网站中的产品:

www.expamle.com/products?category=cars&brand=hot_wheels
或者 :
www.expamle.com/products/car/hot_wheels

什么是最佳做法,为什么?

如果我应用了第二种解决方案,我怎么知道传递的参数的类型是categoryor brand

谢谢。

4

1 回答 1

3

如果它保持原样,第二个选择,到目前为止。不仅是为了优雅,也是为了 SEO。

话虽如此,当你开始有第三和第四个论点时,你显然需要搜索。您是选择使用全文搜索还是更像带有复选框的高级搜索取决于您的项目。我倾向于支持全文搜索,但如果你想坚持你的设计,并且不会添加更多参数,它可能看起来像这样:

您将根据您设置的路线获取参数。

# 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

更新

如果类别和品牌都是可选的并且不依赖,您可以将类别和品牌加入到标签模型中。灵活得多。'产品(​​/:标签(/:标签(/:标签)))'。

于 2013-02-03T15:27:37.830 回答