1

に POST リクエストを送信しようとしています/api/kpi?data=some+stuff:

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

したがって、パスが正しくないと推測しています。右?ルートが間違っているのか、コントローラーなのか、それとも呼び出しなのかを理解するのに苦労しています。

4

1 に答える 1

4

404 を受け取ったら、ルートを確認してください。これは通常、コントローラーに到達するルートがないことを意味します。ルートは、URL とコントローラー間のリンクを作成するものです。コントローラーがヒットした場合、コントローラーが機能するか、ランタイム エラーが発生します。

  1. を実行してルートを検査します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トリガーします。createUsersController

  2. コントローラー/リソース名を指定すると、Rails は慣例により、その名前の複数形を探します。たとえば、 が与えられた場合、Rails はfileresources :userを探しに行きます。(パス/ファイル名は名前と一致する必要があります!)UsersControllerapp/controllers/users_controller.rb

    @yfedblumは、Rails での単数形と複数形の使用について詳しく説明しています。

于 2012-05-31T15:32:53.617 に答える