2012-03-16 5 views
6

私のAPIに正しく機能する投稿要求を送信しています。新しいレコードが作成されます。レコードが、私はこれが私の行動「作成」アクションを実行した後のNoMethodError

def create 
    respond_with Device.create(params[:device]) 
end 

を作成するすべての私のリソースは、ここでは、API#1 V1の下に名前空間されているサーバ・ログに

NoMethodError (undefined method `device_url' for #<Api::V1::DevicesController:0x007fa2f5dde5d8>):app/controllers/api/v1/devices_controller.rb:14:in `create' 

をこのエラーを取得し作成された後、しかし、私のルートは

ファイルでありますHTML POSTリクエストの場合
# Api ('/api') 
namespace :api do 
    # Version 1 ('/api/v1') 
    namespace :v1 do 
     # Locations ('/api/v1/locations') 
     resources :locations 
     # Videos ('/api/v1/videos') 
     resources :videos 
     # Devices ('/api/v1/devices') 
     resources :devices 
    end 
end 

答えて

8

、成功したオブジェクトを作成した後、respond_withはすなわち、ここでそれが

0のようなものに相当します、オブジェクトのパスにリダイレクト
redirect_to Device.create(params[:device]) 

これはdevice_urlにリダイレクトされます。しかし、あなたの名前空間は:あなたのルートのデバイスがあるので、あなたのrespond_with呼び出しに指定する必要があります。

respond_with :api, :v1, Device.create(params[:device]) 
+0

あなたは大丈夫です。 –

+0

それは魅力のように機能します!ありがとう。 –

+0

それは、ソリューションのおかげで動作します。しかし、respond_withでリダイレクトを無効にするにはどうしてもですか?これはAPIの投稿要求なので、実際にはリダイレクトの動作は必要ありません。 – lionel

関連する問題