2017-06-19 106 views
0

我運行測試,控制器spec/controllers/educations_controller_spec.rb上,使用RSpec。的ActionController :: UrlGenerationError:沒有路由匹配{:動作=> 「指數」:控制器=> 「教育」}

即使在我最基礎的測試獲得:index我收到錯誤:

ActionController::UrlGenerationError: No route matches {:action=>"index", :controller=>"educations"} 

我所看到的關於顯示/編輯/更新帖子在需要的ID,但我不認爲一個id應該是索引操作所必需的。

在投機/控制器/ educations_controller_spec.rb:

require 'rails_helper' 

RSpec.describe EducationsController, type: :controller do 
    describe 'GET #index' do 
    it "renders the :index template" do 
     get :index 
     expect(response).to render_template :index 
    end 
    end 
end 

我的路線文件中包含該索引操作:

resources :applications, only: [:index, :new, :show, :create, :edit, :update] do 
    resources :educations, only: [:index, :new, :create, :edit, :update] 
    resources :montessori_trainings, only: [:index, :new, :create, :edit, :update] 
    resources :work_experiences, only: [:index, :new, :create, :edit, :update] 
    resources :references, only: [:index, :new, :create, :edit, :update] 
    resources :documents, only: [:index, :new, :create, :edit, :update] 
end 

你認爲它是與被嵌套在教育路線應用程序路線?

我使用的設計。那裏會有衝突嗎?

感謝您的任何和所有的建議!

+0

是已經制定的控制器,並列出了一個索引操作? –

+0

如果您運行'rake routes',會出現'GET/educations'? – tegon

回答

1

正是有嵌套在應用程序內航線的教育路線做。如果您rake routes,你會看到(用於的教育):

 application_educations GET /applications/:application_id/educations(.:format)     educations#index 
          POST /applications/:application_id/educations(.:format)     educations#create 
    new_application_education GET /applications/:application_id/educations/new(.:format)    educations#new 
    edit_application_education GET /applications/:application_id/educations/:id/edit(.:format)   educations#edit 
     application_education PATCH /applications/:application_id/educations/:id(.:format)    educations#update 
          PUT /applications/:application_id/educations/:id(.:format)    educations#update 

所以,你的教育路線期待application_id

您需要:(1)在您的application_educations_path中包含@application實例或(2)取消嵌套路由。

+0

謝謝@jvillian!這絕對有助於我的測試工作。對於任何接下來的人來說,我碰到的下一個障礙就是用Devise登錄:我在我的educations_controller_spec.rb中添加了=> sign_in create(:user)<=,它阻止了我被重定向到一個登錄頁面,我對索引 – jamieRonin

+0

太好了。隨時歡迎或接受,因爲你認爲合適。 – jvillian

+0

我確實鼓勵了你,但我是超級新人,所以沒有表現出來。 (顯然它被記錄?)@jvillian – jamieRonin

相關問題