尽管已定义路线,但Rails路线错误

时间:2020-02-03 14:28:58

标签: ruby-on-rails reactjs

使用RoR api后端和React前端构建应用程序。挂载App.js组件时,假设要调用后端,提取内容以填充前端。由于某种原因,尽管定义了route和http方法,但仍存在路由错误

App.js> ComponentDidMount()方法

  async componentDidMount(){
    await getEvents(this.props.auth)
    .then((res) => {
      return res.json()})
    .then((json) => this.setState({
        events: [...json['events']]
    }))
    .catch((err) => {
      alert('There was an error retrieving events. ERROR: ' + err)
    })
  }

getEvents()只是一个将Fetch api POST请求返回到我的api URL的函数。

Route.rb文件

Rails.application.routes.draw do
  devise_for :user, only: []
  namespace :v1, defaults: { format: :json } do
    resource :login, only: [:create], controller: :sessions
    resource :sign_up, only: [:create], controller: :users
    resource :event, only: [:create, :update, :destroy], controller: :events
    post '/event/event_like' => 'events#userLikes?'
    post '/events' => 'events#index'
    post '/event/like' => 'events#like'
    post '/event/group' => 'events#getGroup'
    delete '/event/unlike' => 'events#unlike'
  end
end

我不断收到的错误

ActionController::RoutingError (No route matches [POST] "/v1/events"):

actionpack (5.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call'
web-console (3.7.0) lib/web_console/middleware.rb:135:in `call_app'
web-console (3.7.0) lib/web_console/middleware.rb:30:in `block in call'
web-console (3.7.0) lib/web_console/middleware.rb:20:in `catch'
web-console (3.7.0) lib/web_console/middleware.rb:20:in `call'
actionpack (5.2.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
railties (5.2.3) lib/rails/rack/logger.rb:38:in `call_app'
railties (5.2.3) lib/rails/rack/logger.rb:26:in `block in call'
activesupport (5.2.3) lib/active_support/tagged_logging.rb:71:in `block in tagged'
activesupport (5.2.3) lib/active_support/tagged_logging.rb:28:in `tagged'
activesupport (5.2.3) lib/active_support/tagged_logging.rb:71:in `tagged'
railties (5.2.3) lib/rails/rack/logger.rb:26:in `call'
sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (5.2.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (5.2.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'
rack (2.0.7) lib/rack/method_override.rb:22:in `call'
rack (2.0.7) lib/rack/runtime.rb:22:in `call'
activesupport (5.2.3) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (5.2.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (5.2.3) lib/action_dispatch/middleware/static.rb:127:in `call'
rack (2.0.7) lib/rack/sendfile.rb:111:in `call'
rack-cors (1.0.3) lib/rack/cors.rb:95:in `call'
webpacker (4.0.7) lib/webpacker/dev_server_proxy.rb:29:in `perform_request'
rack-proxy (0.6.5) lib/rack/proxy.rb:57:in `call'
railties (5.2.3) lib/rails/engine.rb:524:in `call'
puma (4.1.0) lib/puma/configuration.rb:228:in `call'
puma (4.1.0) lib/puma/server.rb:664:in `handle_request'
puma (4.1.0) lib/puma/server.rb:467:in `process_client'
puma (4.1.0) lib/puma/server.rb:328:in `block in run'
puma (4.1.0) lib/puma/thread_pool.rb:135:in `block in spawn_thread'

终端中的滑轨路线会给出:

                   Prefix Verb   URI Pattern                                                                              Controller#Action
                 v1_login POST   /v1/login(.:format)                                                                      v1/sessions#create {:format=>:json}
               v1_sign_up POST   /v1/sign_up(.:format)                                                                    v1/users#create {:format=>:json}
                 v1_event PATCH  /v1/event(.:format)                                                                      v1/events#update {:format=>:json}
                          PUT    /v1/event(.:format)                                                                      v1/events#update {:format=>:json}
                          DELETE /v1/event(.:format)                                                                      v1/events#destroy {:format=>:json}
                          POST   /v1/event(.:format)                                                                      v1/events#create {:format=>:json}
      v1_event_event_like POST   /v1/event/event_like(.:format)                                                           v1/events#userLikes? {:format=>:json}
                v1_events POST   /v1/events(.:format)                                                                     v1/events#index {:format=>:json}
            v1_event_like POST   /v1/event/like(.:format)                                                                 v1/events#like {:format=>:json}
           v1_event_group POST   /v1/event/group(.:format)                                                                v1/events#getGroup {:format=>:json}
          v1_event_unlike DELETE /v1/event/unlike(.:format)                                                               v1/events#unlike {:format=>:json}
       rails_service_blob GET    /rails/active_storage/blobs/:signed_id/*filename(.:format)                               active_storage/blobs#show
rails_blob_representation GET    /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
       rails_disk_service GET    /rails/active_storage/disk/:encoded_key/*filename(.:format)                              active_storage/disk#show
update_rails_disk_service PUT    /rails/active_storage/disk/:encoded_token(.:format)                                      active_storage/disk#update
     rails_direct_uploads POST   /rails/active_storage/direct_uploads(.:format)                                           active_storage/direct_uploads#create

已定义路由,但呼叫失败。有什么想法吗?

0 个答案:

没有答案