Ruby on Rails - Kaminari违反错误的URL

时间:2017-09-07 14:32:02

标签: ruby-on-rails ruby-on-rails-5 kaminari

我有几条路由指向单个控制器动作,如下所示:

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)

如果我在椭圆电池页面(或使用相同控制器操作的任何其他页面)并且我选择下一页或页码,请求的URL始终是椭圆形 ​​- 倾斜 - 电机uri与我的新页码。看起来Kaminari正在抓住第一条路线,因为当我在路线文件中更改此路线时,分页获取请求会相应地更改。如果不改变我当前的路由结构,是否有解决方法?

2 个答案:

答案 0 :(得分:1)

我认为只需要一条路线,但您应该发送params来发送查询。像那样:

get '/search/:type', to: 'search#category_search'

在你的控制器中:

case params[:type]
when  "elliptical-incline-motors"
   method 1
when "incline-ramp-wheels"
   method 2
etc....
end

我希望它能帮到你

答案 1 :(得分:1)

可能不是最好的解决方案,但您可以尝试以下方法,但它必须是指定的最后一条路线:

获取'* path'=>重定向( '/搜索/:类型')