没有路线匹配…… 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
- Rails3 Active Admin:如何在首次点击Shipments标签时仅显示打开状态记录?
- Grunt任务指南针失败 – 找不到RubyGem指南针(> = 0)
- 将Ruby代码移植到JavaScript时“调用堆栈大小超出”
- 如果页面在ROR上更改,则创建条件以隐藏渲染
- 将Rails表单部分嵌入到另一个页面中
- ‘require bundler’和’require bundler / setup’之间的区别
- 使用Jruby而不是Ruby创建gem
- 如何解决bundle install rake error和Gem :: RemoteFetcher :: FetchError
- 用rvm安装ruby头文件