2017-01-30 155 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

我沒有收到任何rails控制檯錯誤。 ajax調用永遠不會到達rails。它正在作出反應,並在控制檯中返回404。 –

+0

那麼,請求沒有到達導致無效路由的rails服務器?你可以檢查你的網絡標籤(開發工具),看看哪個網址正在發送? – 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

就是這樣!謝謝! –