2012-05-31 91 views
1

我試圖做一個POST請求​​3210:診斷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好吧,現在就嘗試它......我的耙子顯然有版本問題問題......現在解決這些問題:) – 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將觸發的動作UsersController

  2. 給定一個控制器/資源名稱,Rails將通過convention尋找這個名稱的複數。例如,給定resources :user,Rails將在文件app/controllers/users_controller.rb中尋找UsersController。 (路徑/文件名必須與名稱匹配!)

    @yfedblum talks about在Rails中使用單數和複數形成更多細節。