2011-01-09 6 views
0

私はcourses.html.erbでこれを持っているアプリ/ビュー/学生の下レール:未定義のメソッドとform_tags

<% 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%> 

私はアプリ/コントローラの下で私の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> 

私はここで何が欠けていますか?

レーキルート出力:

  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

あなた 'routes'出力を熊手ありませんか? – Heikki

+0

その例を動作させるには、 'course_add_student'という名前のルートが必要です。これはあなたにルートヘルパー 'course_add_student_path'と' course_add_student_url'を与えます。 – Heikki

+0

どうすればいいですか? isnt:メンバーは十分ですか? – SuperString

答えて

関連する問題