Исключение из Rails: не найдено ни одного маршрута [GET] "/ clock_events / 1 / clock_in" - PullRequest
0 голосов
/ 11 апреля 2019

Раньше работал, но после некоторых изменений Action Controller ловит исключение
Routing Error: No route matches [GET] "/clock_events/1/clock_in"

routes.rb файл:

Rails.application.routes.draw do
  root to: 'clock_events#index'

  get '/register', to: 'users#new'
  get '/login', to: 'sessions#new'
  post '/login', to: 'sessions#create'
  get '/logout', to: 'sessions#destroy'

  resources :clock_events, except: [:destroy] do
    member do
      post 'clock_in', to: 'clocks#clock_in'
      post 'clock_out', to: 'clocks#clock_out'
    end
  end

  resources :users, except: [:destroy]

end

enter image description here

1 Ответ

2 голосов
/ 11 апреля 2019

Вы определили clock_in с помощью post http глагола, здесь:

resources :clock_events, except: [:destroy] do
  member do
    post 'clock_in', to: 'clocks#clock_in'
    post 'clock_out', to: 'clocks#clock_out'
  end
end

Но вы пытаетесь использовать глагол get, как указано здесь:

Routing Error: No route matches [GET] "/clock_events/1/clock_in"

Вам нужно либо изменить свой путь, чтобы использовать глагол get:

resources :clock_events, except: [:destroy] do
  member do
    get 'clock_in', to: 'clocks#clock_in'
    post 'clock_out', to: 'clocks#clock_out'
  end
end

, либо изменить свою ссылку (или любую другую информацию), чтобы использовать метод post.

Кроме того, ваши действия clock_in и clock_out вызываются на контроллере clocks, а не на контроллере clock_events, как указано в вашей директиве to::

resources :clock_events, except: [:destroy] do
  member do
    post 'clock_in', to: 'clocks#clock_in'
    post 'clock_out', to: 'clocks#clock_out'
  end
end

Вы уверены?Вы не хотите использовать ClockEventsController?Если это так, вы можете сделать:

resources :clock_events, except: [:destroy] do
  member do
    post :clock_in
    post :clock_out
  end
end

В этом случае вы получите:

 clock_in_clock_event POST   /clock_events/:id/clock_in(.:format)      clock_events#clock_in
clock_out_clock_event POST   /clock_events/:id/clock_out(.:format)     clock_events#clock_out
         clock_events GET    /clock_events(.:format)                   clock_events#index
                      POST   /clock_events(.:format)                   clock_events#create
      new_clock_event GET    /clock_events/new(.:format)               clock_events#new
     edit_clock_event GET    /clock_events/:id/edit(.:format)          clock_events#edit
          clock_event GET    /clock_events/:id(.:format)               clock_events#show
                      PATCH  /clock_events/:id(.:format)               clock_events#update
                      PUT    /clock_events/:id(.:format)               clock_events#update
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...