을 중첩 된 네임 스페이스가 관리자의 조치를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
실제로 생성 브라우저에서 동작하는 경우 제대로 작동하므로 내 사양의 구문에 문제가 있다고 생각합니다. 이것에 대한 조언을 많이 주시면 감사하겠습니다. (여기서는 일반적으로 모범 사례가 아닌 리소스로 이중 중첩되어 있음을 알고 있지만 커리큘럼 & 코스 매개 변수에 액세스 할 수있는 다른 방법을 찾을 수 없습니다.)
스펙 라인은 실제로'assessment' 데이터를 게시하지 않으므로'post : create, course_id : foo, curriculum_id : blah, assessment : {}'일뿐입니다. 'assessment' 해시의 일부로 전달 된 것만 허용하면됩니다. – sevenseacat
정말 고마워! 나는'post : create ... '위에'attrs = Fabricate.attributes_for (: assessment)'를 추가하고 그 행을'post : create, assessment : attrs, course_id : course.id, curriculum_id : course'로 변경했다. 커리큘럼 .id', 부적절한 중첩 문제를 제거합니다. – Matt