2013-12-12 3 views
0

у меня есть это в моем рельсах маршрута:jQuery возвращает 404 для действительного маршрута рельсов?

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 

Любые идеи?

+0

Вы не указали очевидный бит информации: что произойдет, если вы просто наберете 'http: // localhost: 3000/api/callbacks' в адресную строку браузера? Теоретически, я ожидаю, что вы получите ошибку из-за использования GET, а не POST, но если вы получите 404, которые предложили бы проспект расследования ... Или используйте 'wget' или' curl' или аналогичные POST к нему. *** *** очень маловероятно, что проблема jQuery здесь. –

+0

Возвращает 404 из-за того, что это запрос GET. Но я включил строку в поле «правильные маршруты» страницы 404, в которой указано, что указанное выше должно быть действительным. Я попробовал 'CuRL', но я получаю' Недопустимый токен аутентификации' – andy

ответ

1

Я совершенно глуп. Я нашел ответ, используя этот битый код в консоли:

$.ajax({ 
    type:'POST', 
    url:'/api/callbacks', 
    complete:function(xhr){ document.body.innerHTML=xhr.responseText; } 
}) 

Маршрут был действителен, но он послал 404, потому что запись, которую я пытался получить доступ внутри контроллера не была найдена.

Смежные вопросы