您已经使用post http 动词定义了clock_in,这里:
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