2012-05-31 2 views
1

Я пытаюсь сделать запрос POST к /api/kpi?data=some+stuff:Диагностировать ошибку 404 в Rails

curl -i http://127.0.0.1:9010/api/create_kpi -F data="some stuff" 

, но я получаю 404.

Мои маршруты:

# config/routes.rb 

namespace :api do 
    resource :kpi, :except => [:edit, :destroy] 
end 

Который должен ударить мой контроллер

# app/controllers/api/kpi_controller.rb 

class Api::KpiController < ApplicationController 
    def create 
    temp = Kpi.new(params[:data]) 
    end 
end 

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

+1

Выполнение «рейк-маршрутов» покажет вам, как идут ваши маршруты. Убедитесь, что он ведет туда, где вы ожидаете. –

+0

@ jonallard ok, попробовав это сейчас ... у моего рейка, видимо, проблемы с версией ... разрешив их сейчас :) – GeekedOut

+0

Psssst ... Я не знаю, в чем ваша ситуация, но 'bundle install' + [this здесь] (http://stackoverflow.com/a/7553276/720164) (в случае) может помочь –

ответ

3

Когда вы получите 404, проверьте свои маршруты. Обычно это означает, что к контроллеру не будет маршрута. Маршруты - вот что делает связь между URL-адресами и контроллерами. Если ваш контроллер попал, он либо сработает, либо даст вам ошибку времени выполнения.

  1. Inspect your routes запустив rake routes. Это очень полезный инструмент. Это должно дать вам что-то вроде этого:

    users GET /users(.:format)   users#index 
          POST /users(.:format)   users#create 
    new_user GET /users/new(.:format)  users#new 
    edit_user GET /users/:id/edit(.:format) users#edit 
    

    Вы можете видеть, что это дает отображение того, что [method, URL] запрос ударит какой [controller, action]. Например, здесь POST /users активирует действие create of UsersController.

  2. Учитывая имя контроллера/ресурса, Rails будет, по convention, ищите множественное число этого имени. Например, учитывая resources :user, Rails пойдет искать UsersController в файле app/controllers/users_controller.rb. (Имена путей/файлов должны совпадать с именем!)

    @yfedblum talks about Использование единственного числа и множественного числа в Rails для более подробной информации.

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