Как делает направляющие 3 “метод данных ='delete'”, ухудшаются корректно?

Направляющие 3 делают некоторый интересный материал для создания JavaScript незаметным, таким образом, они сделали вещи как это:

= link_to "Logout", user_session_path, :method => :delete

.. преобразовывает в

<a href="/logout" data-method="delete" rel="nofollow">Logout</a>

Но это просто произошло со мной.. Когда я выключаю JavaScript, метод не, больше УДАЛЯЮТ, это, ДОБИРАЮТСЯ как ожидалось. Так есть ли планы к, или есть ли некоторый путь к, позвольте их data- атрибуты для ухудшения корректно, так, чтобы ссылка все еще была УДАЛИТЬ запросом?

36
задан Jon Seigel 23 May 2010 в 00:49
поделиться

2 ответа

Изменение, которое они сделали в Rails 3 с этими data- атрибутами, было сделано не для изящной деградации, а для ненавязчивого JavaScript.

В Rails 2 указание :method => :delete на ссылке генерировало целую кучу встроенного JavaScript, который создавал форму со скрытым входом, а затем отправлял форму. Это было так же, как и сейчас: отключите JavaScript, и по умолчанию будет отправлен GET-запрос. Таким образом, поддержка в случае отсутствия JavaScript такая же, как и раньше.

Один из вариантов - использовать форму/кнопку вместо ссылки, чтобы можно было включить метод как скрытое поле, подобно тому, как это делает JavaScript в Rails 2. Другой вариант заключается в том, чтобы версия GET вела вас на промежуточную страницу, которая, в свою очередь, содержит форму/кнопку.

Преимущество нового подхода в том, что он ненавязчив. JavaScript для изменения HTTP-глагола находится во внешнем файле и использует атрибуты data- для определения элементов, к которым он должен быть присоединен.

37
ответ дан 27 November 2019 в 05:53
поделиться

Единственный шанс, который у вас есть, - определить форму. Ссылка не может быть POST с _method = "delete" без Javascript или по форме.

4
ответ дан 27 November 2019 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: