【发布时间】:2015-02-02 14:51:58
【问题描述】:
我的创建操作的控制器规范中出现此错误
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
当我在浏览器中实际运行创建操作时,它工作正常,所以我猜测这是我的规范语法的问题。对此的任何建议将不胜感激。 (我意识到我在这里的资源是双重嵌套的,这通常不是最佳实践,但我找不到任何其他方式来访问课程和课程参数。)
【问题讨论】:
标签: ruby-on-rails rspec actioncontroller