我有几条路线指向这样的单个控制器操作:
get '/elliptical-incline-motors', to: 'search#category_search'
get '/incline-ramp-wheels', to: 'search#category_search'
get '/elliptical-drive-belt', to: 'search#category_search'
get '/elliptical-batteries', to: 'search#category_search'
我的查询看起来像这样:
@products = Product.joins(category_model: {category_brand: :category}).where("categories.name = ? AND products.status = ?", category, "Viewable On Website & Backend").order(popularity: :desc).page(page).per(25)
如果我在椭圆形 - batteries页面(或使用相同控制器操作的其他任何页面),并且我选择下一页或页码,则请求的URL始终是我的椭圆形 - incline-motors uri with my新页码。看来Kaminari正在抓住第一条路线,因为当我在路由文件中更改此路线时,分页获取请求会相应地更改。是否可以解决这个问题,而没有解决我当前的路由结构?
我认为只有一条路线是必要的,但是您应该发送参数以调度访问行动中的查询。这样:
get '/search/:type', to: 'search#category_search'
在您的控制器中:
case params[:type]
when "elliptical-incline-motors"
method 1
when "incline-ramp-wheels"
method 2
etc....
end
我希望它能帮助您
也许不是最好的解决方案,但是您可以尝试以下内容,尽管它必须是指定的最后一个路线:
get'*path'=> redirect('/search/:type')