Вопрос

Rails 3 делает несколько классных вещей, чтобы сделать JavaScript ненавязчивым, поэтому они сделали такие вещи:

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

..Коверты к

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

Но это только что произошло для меня .. Когда я выключаю JavaScript, метод больше не удаляет, он должен быть, как ожидалось. Так есть ли планы, или есть ли какой-то способ, позволить этим data- Атрибуты изящно ухудшаются, так что ссылка все еще является удалением запроса?

Это было полезно?

Решение

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

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

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

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

Другие советы

Вместо того, чтобы использовать link_to метод - который потребует, чтобы вы использовали JavaScript, чтобы убедиться, что метод HTTP DELETE -- использовать button_to Способ, который создаст форму с скрытым входным элементом, который говорит рельсам лечить метод HTTP как DELETE скорее, чем POST. Отказ При необходимости вы можете использовать CSS для стиля кнопки в форме, чтобы она выглядела как ссылка.

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

Это невозможно без JavaScript.

Я делаю небольшой плагин jQuery для преобразования data-method Атрибут ссылки на псевдо скрытые формы (например, в проекте Laravel).

Если вы хотите использовать его: https://github.com/ifnot/restfuliverjs.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top