rspec ActionController::UrlGenerationError для создания действия в администраторе пространства имен, который является вложенным
Я получаю эту ошибку в спецификации контроллера для моего действия создания
No route matches {:action=>"create", :assessment=>{:course_id=>"1", :curriculum_id=>"1"}, :controller=>"admin/assessments"}
Вот моя спецификация контроллера:
it "sets the flash success" do
set_current_admin
course = Fabricate(:course)
post :create, assessment: { course_id: course.id, curriculum_id: course.curriculum.id }
expect(flash[:success]).not_to be_blank
end
Ошибка возникает на post :create..
линия.
Вот мое создание действий для оценок:
def create
@assessment = Assessment.new(assessment_params.merge!(course_id: Course.find(params[:course_id]).id))
if @assessment.save
flash[:success] = "You have created your assessment."
redirect_to curriculum_course_assessment_path(@assessment.course.curriculum, @assessment.course, @assessment)
else
...
end
end
И вот мой маршрут для оценок:
resources :curriculums, only: [:index, :show] do
resources :courses, only: [:show] do
resources :assessments, only: [:show]
namespace :admin do
resources :assessments, only: [:index, :new, :create, :edit, :update]
end
end
end
Вот строка из моего rake routes
...
POST /curriculums/:curriculum_id/courses/:course_id/admin/assessments(.:format) admin/assessments#create
Когда я фактически запускаю действие создания в браузере, оно работает нормально, поэтому я предполагаю, что это проблема с синтаксисом моей спецификации. Любой совет по этому вопросу будет высоко ценится. (Я понимаю, что здесь у меня двойное вложение ресурсов, что, как правило, не лучшая практика, но я не мог найти какой-либо другой способ получить доступ к параметрам учебных программ и курсов.)
1 ответ
Вы вкладываете course_id
а также curriculum_id
параметры внутри assessment
hash - в маршруте они не вложенные.