У меня это в моем маршруте:
scope '/api' do
# ...
resources :callbacks, only: [:create]
end
Он работал (возвращая 500 ошибок), но я исправил это, и вдруг я получаю ошибку 404, когда это запускается с этим куском coffeescript:
$('.add-callback button').on 'click', (e) ->
$form = $(@).parent()
$data =
notes: $form.find('[name="callback-notes"]').val()
date : $form.find('[name="callback-date"]').val()
time : $form.find('[name="callback-time"]').val()
$.ajax
type: "POST",
url: "/api/callbacks",
data: $data,
success: (data) ->
if data.success
$form.fadeOut ->
location.reload true
и он возвращает это:
POST http://localhost:3000/api/callbacks 404 (Not Found)
Но POST/api/callbacks
находится в списке допустимых маршрутов, когда вы получаете 404 в другом месте:
callbacks_path POST /api/callbacks(.:format) callbacks#create
Есть идеи?
Я совершенно глуп. Я нашел ответ, используя этот бит кода в консоли:
$.ajax({
type:'POST',
url:'/api/callbacks',
complete:function(xhr){ document.body.innerHTML=xhr.responseText; }
})
Маршрут был действительным, но он отправил 404, потому что запись, которую я пытался получить в контроллере, не была найдена.
http://localhost:3000/api/callbacks
в адресную строку браузера? Теоретически, я ожидаю, что вы получите ошибку из-за использования GET, а не POST, но если вы получите 404, который предложил бы направление исследования ... Или используйтеwget
илиcurl
или что-то подобное, чтобы фактически выполнить POST для него , Крайне маловероятно, что проблема здесь в jQuery.CuRL
но получаюCuRL
Invalid authenticity token