我在app / views / students
下的courses.html.erb中有这个<% if @student.courses.count < Course.count then%>
<% form_tag(course_add_student_path(@student)) do%>
<%= select_tag(:course, options_from_collection_for_select(@student.unenrolled_courses, :id, :name))%>
<%= submit_tag 'Enroll'%>
<%end%>
<%else%>
<p><%=h @student.name%> is enrolled in every course. </p>
<%end%>
我在app / controllers下的students_controller.rb中有这个:
def course_add
@student = Student.find(params[:id])
@course = Course.find(params[:course])
unless @student.enrolled_in?(@course)
@student.coursess << @course
flash[:notice] = 'course added'
else
flash[:error] = 'course already enrolled'
end
redirect_to :action => courses, :id => @student
end
在我的routes.rb中,我有:
resources :students, :has_many => [:awards], :member => {:courses => :get, :course_add => :post, :course_remove => :post}
但是,我收到此错误:
undefined method `course_add_student_path' for #<#<Class:0x105321d78>:0x1053200e0>
我在这里缺少什么?
Rake路线输出:
students GET /students(.:format) {:action=>"index", :controller=>"students"}
POST /students(.:format) {:action=>"create", :controller=>"students"}
new_student GET /students/new(.:format) {:action=>"new", :controller=>"students"}
edit_student GET /students/:id/edit(.:format) {:action=>"edit", :controller=>"students"}
student GET /students/:id(.:format) {:action=>"show", :controller=>"students"}
PUT /students/:id(.:format) {:action=>"update", :controller=>"students"}
DELETE /students/:id(.:format) {:action=>"destroy", :controller=>"students"}
courses GET /courses(.:format) {:action=>"index", :controller=>"courses"}
POST /courses(.:format) {:action=>"create", :controller=>"courses"}
new_course GET /courses/new(.:format) {:action=>"new", :controller=>"courses"}
edit_course GET /courses/:id/edit(.:format) {:action=>"edit", :controller=>"courses"}
course GET /courses/:id(.:format) {:action=>"show", :controller=>"courses"}
PUT /courses/:id(.:format) {:action=>"update", :controller=>"courses"}
DELETE /courses/:id(.:format) {:action=>"destroy", :controller=>"courses"}
student_awards GET /students/:student_id/awards(.:format) {:action=>"index", :controller=>"awards"}
POST /students/:student_id/awards(.:format) {:action=>"create", :controller=>"awards"}
new_student_award GET /students/:student_id/awards/new(.:format) {:action=>"new", :controller=>"awards"}
edit_student_award GET /students/:student_id/awards/:id/edit(.:format) {:action=>"edit", :controller=>"awards"}
student_award GET /students/:student_id/awards/:id(.:format) {:action=>"show", :controller=>"awards"}
PUT /students/:student_id/awards/:id(.:format) {:action=>"update", :controller=>"awards"}
DELETE /students/:student_id/awards/:id(.:format) {:action=>"destroy", :controller=>"awards"}
courses_student GET /students/:id/courses(.:format) {:action=>"courses", :controller=>"students"}
GET /students(.:format) {:action=>"index", :controller=>"students"}
POST /students(.:format) {:action=>"create", :controller=>"students"}
GET /students/new(.:format) {:action=>"new", :controller=>"students"}
GET /students/:id/edit(.:format) {:action=>"edit", :controller=>"students"}
GET /students/:id(.:format) {:action=>"show", :controller=>"students"}
PUT /students/:id(.:format) {:action=>"update", :controller=>"students"}
DELETE /students/:id(.:format) {:action=>"destroy", :controller=>"students"}
答案 0 :(得分:1)
您的路线语法错误。试试这个:
resources :students do
resources :awards
member do
get "courses"
post "course_add"
post "course_remove"
end
end