在我目前正在处理的网络应用中,数据最初显示为一个表格,显示来自数据库的SKU数据。我们有三个仓库,一组我们想要实施的过滤器,以及一系列我们想要实施的类型。
有没有办法可以实现这样的事情:
../sort/:sortcol/:sort_type/..
../warehouse/:warehouse/..
../filter/:filter_id/..
因此,如果用户只执行/warehouse/A
,它将返回仅包含在仓库A中的所有内容。如果用户转到/warehouse/A/sort/sku/asc
,它将从仓库A获取数据,然后按SKU对其进行排序升序。我也希望以任何顺序提供这些 - 也就是说,可以在过滤之前或之后调用排序。如何做到这一点?
答案 0 :(得分:0)
你有没有试过像:
resources :warehouses do
get 'sort/*sortcol/*sort_type', to: 'warehouses#index'
end
get 'sort/*sortcol/*sort_type/warehouses/*warehouse_id', to: 'warehouses#index'
哪个应该给你这样的东西:
GET /warehouses/:warehouse_id/sort/*sortcol/*sort_type(.:format) warehouses#index
warehouses GET /warehouses(.:format) warehouses#index
POST /warehouses(.:format) warehouses#create
new_warehouse GET /warehouses/new(.:format) warehouses#new
edit_warehouse GET /warehouses/:id/edit(.:format) warehouses#edit
warehouse GET /warehouses/:id(.:format) warehouses#show
PATCH /warehouses/:id(.:format) warehouses#update
PUT /warehouses/:id(.:format) warehouses#update
DELETE /warehouses/:id(.:format) warehouses#destroy
GET /sort/*sortcol/*sort_type/warehouses/*warehouse_id(.:format) warehouses#index
然后你可以在warehouse_controller#index
中检查一些参数,以确定是执行排序索引还是常规索引。
作为旁注,我认为惯例是在使用单个仓库时使用warehouses/:id
。不是warehouse/:id
。您可以在warehouse_path
下的命名路由中看到此内容。