2017-01-30 17 views
0

私はこのAJAX POSTリクエストを自分の反応コンポーネントで配線して、rails apiコントローラと通信しようとしています。コンソールに404エラーが記録されていて、私はそれを打つことができません。React/Rails AJAX POSTリクエストが返される404

は/ SRC /ページ/ HomeIndex.js

getCompare() { 
    $.ajax({ 
     url: '/api/sources/compare', 
     type: 'POST', 
     data: {value: this.state.inputValue, from: this.state.compareFrom, to: this.state.compareTo }, 
     contentType: 'application/json' 
    }) 
    } 

コントローラ/ API/sources_controller.rb

def compare 
    binding.pry 
    end 

設定/ルート

post '/api/sources/compare', to: 'api/sources#compare' 

    namespace :api do 
    resources :sources, only: [:index, :compare] 
    end 

すくいルート

api_sources_compare POST /api/sources/compare(.:format) api/sources#compare 
を反応させます

更新

私はすべて同じ結果に... ...いくつかの順列でルートを更新

namespace :api do 
    resources :sources, only: [:index] do 
     collection do 
     post :compare 
     end 
    end 
    end 

    namespace :api do 
    resources :sources, only: [:index, :compare] do 
     collection do 
     post :compare 
     end 
    end 
    end 

    namespace :api do 
    resources :sources, only: [:index] do 
     collection do 
     resources :compare, only: [:compare] 
     end 
    end 
    end 

    namespace :api do 
    resources :sources do 
     post :compare 
    end 
    end 

を試してみました。

+0

をあなたのレールのコンソール・エラー・ログを投稿することができますか? – mrlew

+0

レールのコンソールエラーが表示されません。 ajax呼び出しは決して軌道に達しません。反応してコンソールに404を返します。 –

+0

したがって、要求は無効なルートを持つレールサーバーに到達していませんか?あなたのネットワークタブ(devのツール)を確認し、どのURLが送信されているかを確認できますか? – mrlew

答えて

1

次のようにあなたは、あなたのAJAXペイロードを文字列化することによって、これを解決することができます。

getCompare() { 
 
    let data = JSON.stringify({value: this.state.inputValue, from: this.state.compareFrom, to: this.state.compareTo }) 
 
    $.ajax({ 
 
     url: '/api/sources/compare', 
 
     type: 'POST', 
 
     data: data, 
 
     contentType: 'application/json' 
 
    }) 
 
    }

+0

それでした!ありがとう! –

関連する問題