$.ajax запрос на удаление без отправки параметров данных в capybara-webkit

Я обнаружил, что мои ajax-запросы DELETE не отправляют параметры данных контроллеру, когда я выполняю их через capybara-webkit. Однако параметры данных отправляются (и тест проходит), когда я запускаю набор тестов с помощью селена. Мой код выглядит следующим образом:

$(document).on 'click', 'a.delete_contact', ->
  if confirm "Are you sure you want to delete this contact?"
    id = $('a.delete_contact').data('id')
    name = $('a.delete_contact').data('name')
    $.ajax '/contacts',
      type: 'DELETE'
      dataType: 'html'
      data: {'id' : id}
      success: ->
        $("li[data-cid='#{id}']").remove()
        removeInitial(_.last(name.split(" "))[0])
        show_notice("Contact successfully destroyed.", 'notice')
        window.contactSelection.pop()        
        refreshSelectionView()
  return false

Есть идеи, почему это не работает в capybara-webkit?


person user2287662    schedule 16.04.2013    source источник
comment
Я не уверен в решении этой проблемы, но похоже, что capybara-webkit не может имитировать HTTP-глаголы. См. обсуждение здесь.   -  person Jason Kim    schedule 16.04.2013
comment
@JasonKim Я полагаю, что обсуждение касалось разрешения произвольных запросов к серверу из вашего кода Ruby. Это проблема с браузером (как имитируется capybara-webkit), который не отправляет через тело запроса, если метод HTTP не PUT или POST. У меня такая же проблема, хотя я пытаюсь использовать метод PATCH.   -  person phylae    schedule 25.07.2013


Ответы (1)


По-видимому, QtWebKit не поддерживает тело объекта с запросами DELETE.

https://github.com/thoughtbot/capybara-webkit/issues/427#issuecomment-12200262

Разработчик capybara-webkit рекомендовал этот обходной путь: «[Отправить] запрос POST с параметром, идентифицирующим запрос как DELETE. Этот механизм используется Rails для решения аналогичных проблем в разных браузерах».

person phylae    schedule 25.07.2013