AbstractController :: ActionNotFound Exception: действие <url>не может быть найдено контроллером - PullRequest
0 голосов
/ 07 мая 2020

В моем приложении rails у меня есть следующий URL-адрес, который я пытаюсь проверить.

"/team/17682/csrs/102094/verification_check?dcv_protocol=https&selected_csr=102094&choose_cn=138012"

В моем приложении rails, пройдя рабочий процесс приложения, журналы показывают, что этот URL-адрес обрабатывается как JSON.

enter image description here

В одном из моих файлов js код, который отправляет этот запрос, выглядит следующим образом:

  $.ajax({url: '<%=verification_check_csr_path(@ssl_slug, @csr.id)%>?dcv_protocol=cname&selected_csr='+
        $('#selected_csr').val()+'&choose_cn='+$(dcv_select).parents('tr').find('input[id*=d_name_id]').val()}).done()

Единственное, что касается этого вызова ajax, - это просто проиллюстрировать тот факт, что файл js вызывает ajax, а передаваемые параметры являются производными html элементов.

Теперь в моем файле rspe c spe c я получаю сообщение об ошибке при запуске этого запроса на получение, и я не могу понять, почему. Вот несколько реализаций, которые я пробовал в моем файле spe c с ошибкой, которая сопровождает его.

Вот параметры, которые я передаю. Они соответствуют тому, что должно быть передано.

params = {
      dcv_protocol: 'http',
      choose_cn: 1234,
      selected_csr: 5678
    }

# Attempt 1 #
get verification_check_csr_url(ssl_account.ssl_slug, csr.id, params)
*** AbstractController::ActionNotFound Exception: The action 'http://test.host/team/team-vvujoqqyde/csrs/1003/verification_check?choose_cn=1001&dcv_protocol=http&selected_csr=1003' could not be for CsrsController

# Attempt 2 #
get verification_check_csr_url(ssl_account.ssl_slug, csr.id, params), xhr: true
Same Error as Attempt 1: xhr: true did not do anything

# Attempt 3 #
get "#{verification_check_csr_path(ssl_account.ssl_slug, csr.id)}?dcv_protocol=http&selected_csr=#{csr.id}&choose_cn=#{domain.id}"
*** AbstractController::ActionNotFound Exception: The action '/team/team-vvujoqqyde/csrs/1003/verification_check?dcv_protocol=http&selected_csr=1003&choose_cn=1001' could not be found for CsrsController

# Attempt 4 #
get "#{verification_check_csr_path(ssl_account.ssl_slug, csr.id)}?dcv_protocol=http&selected_csr=#{csr.id}&choose_cn=#{domain.id}", xhr: true
Same as Attempt #3

# Attempt 5 #
get :verification_check, team: ssl_account.ssl_slug, id: csr.id, params: params
This produces an error in the test spec but I can't walk through it with byebug

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

rake routes показывают это:

verification_check_csr GET  (/team/:ssl_slug)/csrs/:id/verification_check(.:format) csrs#verification_check

Наконец, когда я пытаюсь разместить этот rspe c matcher expect(response).to have_http_status(200), я получаю 404. Я что-то упускаю?

...