没有路线匹配…… Rails引擎

所以我一直收到错误:

No route matches {:action=>"create", :controller=>"xaaron/api_keys"}

测试中抛出了哪些内容:

 it "should not create an api key for those not logged in" do post :create expect(response).to redirect_to xaaron.login_path end 

当我去spec/dummy并运行rake routes命令时,我看到:

  api_keys GET /api_keys(.:format) xaaron/api_keys#index POST /api_keys(.:format) xaaron/api_keys#create new_api_key GET /api_keys/new(.:format) xaaron/api_keys#new edit_api_key GET /api_keys/:id/edit(.:format) xaaron/api_keys#edit api_key GET /api_keys/:id(.:format) xaaron/api_keys#show PATCH /api_keys/:id(.:format) xaaron/api_keys#update PUT /api_keys/:id(.:format) xaaron/api_keys#update DELETE /api_keys/:id(.:format) xaaron/api_keys#destroy 

这表明这条路线确实存在。 我的此引擎的路由文件如下所示:

 Xaaron::Engine.routes.draw do get 'login' => 'sessions#new', :as => 'login' get 'logout' => 'sessions#destroy', :as => 'logout' get 'signup' => 'users#new', :as => 'signup' get 'permission_denied' => 'error#denied', :as => 'permission_denied' get 'record_not_found' => 'error#error', :as => 'record_not_found' get 'password_reset' => 'password_resets#edit', :as => 'rest_user_password' resource :error, controller: 'error' resources :users resources :api_keys resources :sessions resources :roles resources :password_resets end 

我错过了什么?

更新

对于那些你好奇我如何获得这些路线的人,因为虚拟应用程序的路由文件是默认设置的(如默认):

 Rails.application.routes.draw do mount Xaaron::Engine => "/xaaron" end 

更新II

我一直在阅读关于如何在引擎中完成路由的api文档 ,我相信我这样做的方式是正确的,控制器如何定义如下:

 module Xaaron class ApiKeysController  current_user.id) end def create @api_key = Xaaron::ApiKey.new(:user_id => current_user.id, :api_key => SecureRandom.hex(16)) create_api_key(@api_key) end def destroy Xaaron::ApiKey.find(params[:id]).destroy flash[:notice] = 'Api Key has been deleted.' redirect_to xarron.api_keys_path end end end 

您需要告诉您使用引擎路线的规格:

 describe ApiKeysController do routes { Xaaron::Engine.routes } it "should not create an api key for those not logged in" do post :create expect(response).to redirect_to xaaron.login_path end end