Гнездовая маршрутизация в любом порядке

В веб-приложении, над которым я сейчас работаю, данные изначально представлены в виде таблицы, показывающей данные 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,

Другие вопросы по тегам