Rails restful не-GET запросы из встроенных ссылок без Javascript - PullRequest
0 голосов
/ 07 марта 2011

Может показаться, что Rails не поддерживает встроенные ссылки для не-GET запросов. Изначально система лесов Rails использует встроенные ссылки для удаления.

Хотя rails.js совершенно адекватно добавляет токены csrf перед отправкой запроса на удаление, браузеры без Javascript полностью пропускают этот шаг и вместо этого просто отправляют GET-запрос собственно ресурсу.

Мое текущее приложение также разработано таким образом, что другие не-GET-запросы будут инициироваться из встроенных ссылок.

Нерешенное решение, которое я придумал, состояло в том, чтобы создать аналог «удаления представления» для #destroy, поскольку #new для #create и #edit для #update, а затем просто иметь форму для выполнить логику, делегируя установку csrf конструктору форм (что он делает из коробки).

Проблема с этим решением состоит в том, что требуется больше шагов, чем идеально. Очевидно, что мы можем сказать, что неудобства не слишком велики, и если вы используете не-JS браузер, вы, вероятно, можете смириться с менее современным UX. Но я бы хотел найти лучшее решение.

Итак, что пришло в голову, это использовать формы вместо ссылок. Единственная проблема заключается в том, что единственный способ отправить форму в браузере, отличном от JS, - это нажать кнопку «Отправить». Но input type="submit" является заменяемым элементом и не соответствует стилю обычного элемента. Попытка заставить это выстроить кросс-браузер с обычным встроенным или встроенным блоком текста была разочаровывающим упражнением.

Так, каков наилучший способ сделать это? И есть ли какая-то серьезная причина, по которой скаффолды Rails не работают в готовых браузерах не из JS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...