2

我正在用 Ruby on Rails 构建一个小项目(我在使用它时还很新)。想法是建立一个小型列表网站,用户可以在其中根据国家和类别过滤所有列表。

我使用 gem ransack 实现了过滤器,它可以工作。

现在,我要改进的是用户过滤视图后的 URL,例如我的 URL 如下所示: domain.com/listings?utf8=%E2%9C%93&q%5Bcategory_eq%5D=sport&q%5Bcountry_eq%5D=波斯尼亚+和+黑塞哥维那

出于 SEO 的原因,我想拥有漂亮、干净的 URL。然后上面的例子将转化为(或这个方向的东西):domain.com/listings/all/c/sport/d/Bosnia-and-Herzegovina

我安装了 gem rack rewrite 并得到了一些基本的重定向工作。但我无法弄清楚规则需要如何才能实现上面的 URL。特别是因为用户只能使用一个过滤器,这会导致这样的 URL:domain.com/listings/all/d/Bosnia-and-Herzegovina

有人有想法或遇到同样的问题吗?

4

1 回答 1

2

您应该将这样的内容添加到您的config/routes.rb

get 'listings/all/c/:category/d/:country', to: 'listings#search'

# if you want URLs with only country or only category
# also add these two
get 'listings/all/d/:country', to: 'listings#search'
get 'listings/all/c/:category', to: 'listings#search'

然后在您的 ListingsController#search 方法中(替换您的实际控制器和方法名称):

# Let's say user opens "domain.com/listings/all/c/sport/d/Bosnia-and-Herzegovina
def search
  params[:category] # 'sport'
  params[:country] # Bosnia-and-Herzegovina
  # ... you code could use params above ...
end
于 2015-08-04T10:39:33.650 回答