Гнездовая маршрутизация в любом порядке
В веб-приложении, над которым я сейчас работаю, данные изначально представлены в виде таблицы, показывающей данные SKU из базы данных. У нас есть три склада, набор фильтров, которые мы хотели бы реализовать, и набор видов, которые мы хотели бы реализовать.
Есть ли способ, которым мы можем реализовать что-то вроде этого:
../sort/:sortcol/:sort_type/..
../warehouse/:warehouse/..
../filter/:filter_id/..
так что если пользователь просто делает /warehouse/A
, он возвращает все содержимое хранилища А. Если пользователь переходит на /warehouse/A/sort/sku/asc
получает данные из хранилища A, а затем сортирует их по SKU в порядке возрастания. Я также хотел бы, чтобы они были доступны в ЛЮБОМ порядке - то есть сортировка может быть вызвана до или после фильтра. Как можно это сделать?
1 ответ
Вы пробовали что-то вроде:
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
,