简体   繁体   English

React / Rails AJAX POST请求返回404

[英]React/Rails AJAX POST request returns 404

I'm trying to wire up this AJAX POST request in my react component to communicate with my rails api controller. 我正在尝试在react组件中连接此AJAX POST请求,以与Rails api控制器进行通信。 The console logs a 404 error and I can't seem to hit the pry. 控制台记录404错误,我似乎无法进行撬动。

react/src/pages/HomeIndex.js react / src / pages / 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'
    })
  }

controllers/api/sources_controller.rb controllers / api / sources_controller.rb

  def compare
    binding.pry
  end

config/routes 配置/路由

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

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

rake routes 耙路

api_sources_compare POST /api/sources/compare(.:format) api/sources#compare

update 更新

I tried updating the routes with several permutations... 我尝试用几个排列更新路线...

  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

...all with the same outcome. ...所有结果相同。

You can solve this by stringifying your AJAX payload, as follows: 您可以通过对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' }) } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM