2017-07-27 1 views
2

を打た私は、コールがにApi::V1::ElementsControllerに行くElement1つのURL /私のJSクライアントからのメソッドにPUTをやって、別の1は

呼び出すモデルの倍数を取るAPIエンドポイントを構築しようとしていますFooメソッド。 rake routes

api_v1_user_elements_element_update_multiple PUT  /v1/users/:user_id/elements/element_update_multiple(.:format) api/v1/elements#foo 

から

scope module: :api, as: :api do 
    namespace :v1 do 
    resources :users, only: [:show, :update] do 
     resources :elements 
     put 'elements/element_update_multiple', to: 'elements#foo' 

しかし、私は私のクライアントからその経路にPUTを行うとき、私は私の端末で

を次のエラーを取得するいくつかの理由で、「PUT開始/ v1/users/5/elements/element_update_multiple "10.0.2.2の場合2017-07-27 17:16:00 +0000 コンソールを10.0.2.2からレンダリングできません!許可されたネットワーク:127.0.0.1、:: 1、127.0.0.0/127.255.255.255 ActiveRecord :: SchemaMigrationロード(0.4ms)SELECT "schema_migrations"。* FROM "schema_migrations" Api :: V1 :: ElementsController#updateによる処理JSON

ように、それはupdate方法ではなく、foo方法に落ちています。なぜこれが起こっているのか?ありがとう!

答えて

1

ルートファイル内のルートの順序が原因です。

put 'elements/element_update_multiple', to: 'elements#foo' 
resources :elements 

routes.rbファイルが順番に敏感なので、Railsは一致するルートを見つけた場合、それはあなたのリソースルートで更新方法を発見し、この場合には(カスタムPUTルートを打つ前に:あなたはこのようにそれらを周りに切り替える必要があります)それは最初にそれを取り、あなたのカスタムPUTルートには決して行きません。 resourcesにルートを追加するには

0

はそうのようなAdding Collection Routesを試してみてください。

scope module: :api, as: :api do 
    namespace :v1 do 
    resources :users, only: [:show, :update] do 
     resources :elements do 
      collection do 
      put 'element_update_multiple', to: 'elements#foo' 
      end 
     end 
関連する問題