ActionController :: UrlGenerationError:没有路由匹配动作和控制器

时间:2015-09-21 14:04:53

标签: ruby-on-rails rspec

我无法在其他相关问题中找到解决方案,所以我自问。

问题非常简单。这是我得到的错误:

Failure/Error: get 'api/v2/special_keys#show'
 ActionController::UrlGenerationError:
   No route matches {:action=>"api/v2/special_keys#show", :controller=>"api/v2/special_keys"}

这是我的routes.rb

resources :special_keys, only: [] do
  collection do
    get '', to: 'special_keys#show'
  end
end

这是rake routes的输出:

GET /api/v2/special_keys(.:format) api/v2/special_keys#show {:format=>"json"}

我的规格:

require 'rails_helper'

describe Api::V2::SpecialKeysController do
  describe 'GET #show' do
    it 'gets the policy and signature' do
      get '/api/v2/special_keys'

      expect(response.status).to eql 200
    end
  end
end

2 个答案:

答案 0 :(得分:1)

尝试将测试重写为:

require 'rails_helper'

describe Api::V2::SpecialKeysController do
  describe 'GET #show' do
    it 'gets the policy and signature' do
      get '/api/v2/special_keys', {format: :json}

      expect(response.status).to eql 200
    end
  end
end

答案 1 :(得分:0)

尝试:

resource :special_keys, only: [:show]

单数告诉应用程序,只有一个。因此,它只会生成一个show操作,根本不需要ID,也不需要index操作。