过滤时查询字符串或绑定参数

时间:2013-02-03 15:12:24

标签: ruby-on-rails ruby-on-rails-3 seo query-string

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

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

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

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

感谢。

1 个答案:

答案 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模型。更加灵活。 。的产品(/:标签(/:标签(/:标签)))'