Rails - Как передать массивы идентификаторов в качестве параметров для скрытого поля?

В приложении rails 4 есть список данных вместе с флажком (несколько). Я хочу удалить некоторые выбранные данные, для обычного метода delete я пробовал 1000 строк за раз, и он возвращает 414 Request-URI Too Large. Поскольку все идентификаторы передаются в URL так же, как метод get.

Я попытался исправить это, используя отправку формы, передав идентификаторы как скрытое поле, но идентификаторы пусты. Потому что идентификаторы должны пройти через флажок.

Есть ли способ исправить эту проблему в прямом запросе, передав идентификаторы в качестве параметров? Перед этим нам тоже нужно запросить подтверждение Are you sure?.

Как мы можем получить выбранные идентификаторы флажков и назначить параметры здесь?

Пожалуйста, помогите мне, каким-то образом я должен удалить 1000 строк за раз.


person Shruthi R    schedule 27.07.2020    source источник
comment
Почему вы не пытались сделать это с помощью POST-запроса? Потому что, если вы используете javascript или любой связанный с ним хак, всегда потребуется время для обработки 1000 записей.   -  person code_aks    schedule 27.07.2020
comment
каким-то образом я должен иметь возможность удалять 1000 строк за раз. Это никогда не должно быть сделано с запросом GET. GET всегда должен быть идемпотентным и не должен создавать, удалять или изменять ресурсы. Используйте УДАЛИТЬ.   -  person max    schedule 27.07.2020
comment
Даже метод POST возвращает ту же ошибку, что и метод GET/DELETE, возвращающий 414 Request-URI Too Large   -  person Shruthi R    schedule 28.07.2020


Ответы (1)


Чтобы избежать ограничений длины поля запроса URL-адреса, вы можете использовать метод POST.

Поскольку это не согласуется с парадигмой REST, вы можете включить скрытое поле для передачи атрибута _method со значением delete, что является способом Rails для реализации глагола DELETE поверх HTTP-запроса POST.

Конечно, вам нужно убедиться, что маршрут правильно указан для маршрутизации этого запроса к соответствующей конечной точке стойки.

person Les Nightingill    schedule 27.07.2020