不幸的是,没有真正的方法可以做到这一点,即定义具有未定义数量的路径组件的路由。您可以选择最大数量,并定义一系列路线,例如
get '/houses/:f1' => 'houses#index'
get '/houses/:f1/:f2' =>'houses#index'
...
get '/houses/:f1/:f2/:f3/:f4/:f5/:f6' =>'houses#index'
但这会很快变得丑陋,我建议使用这样的 URL 方案:
get '/houses' => 'houses#index'
然后您的 URL 可能如下所示:
/houses?filter=goodschool,bbq,northeast
然后在您的索引操作中:
def index
if params[:filter]
filters = params[:filter].split(",")
filters.each do |f|
# do something with each term in the filter, I have no idea
end
@houses = House.where(.....???)
else
@houses = House.all
end
end
它不会产生您所追求的 SEO 友好 URL,但我不确定这将如何影响您的情况下的 SEO。