Field | Datatype |
---|---|
name | string |
gender | string |
phone | string |
Field | Datatype |
---|---|
course_num | string |
title | string |
credit_hours | integer |
Field | Datatype |
---|---|
student_id | integer |
course_id | integer |
http://localhost:3000/students http://localhost:3000/courses
<h3>Courses for <%= @student.name %></h3> <table> <tr> <th>Course Number</th> <th>Course Title</th> <th>Credit Hours</th> </tr> <% @student.enrollments.each do |e| %> <tr> <td><%= e.course.course_num %></td> <td><%= e.course.title %></td> <td><%= e.course.credit_hours %></td> </tr> <% end %> </table>
<h3>Students in <%= @course.course_num %></h3> <table> <tr> <th>Name</th> <th>Gender</th> <th>Phone Number</th> </tr> <% @course.enrollments.each do |e| %> <tr> <td><%= e.student.name %></td> <td><%= e.student.gender %></td> <td><%= e.student.phone %></td> </tr> <% end %> </table>
<td><%= course.enrollments.count %></td>
We now add the capability of enrolling students in new courses.
def get_courses courses = self.enrollments.collect do |e| e.course end return courses end # Check if student is enrolled in a course def enrolled_in?(course) return get_courses.include?(course) end # Get list of all courses that a # student is not enrolled def unenrolled_courses return Course.all - get_courses end
def add_course @student = Student.find(params[:id]) @course = Course.find(params[:course]) if not @student.enrolled_in?(@course) enroll = Enrollment.new enroll.student_id = @student.id enroll.course_id = @course.id enroll.save end redirect_to @student endAdd this form to the bottom of the Student show method before the Edit and Back links.
<% if @student.courses.count < Course.count %> <p>Enroll in a course.</p> <%= form_tag add_course_student_path(@student) do %> <%= select_tag(:course, options_from_collection_for_select( @student.unenrolled_courses, :id, :course_num)) %> <%= submit_tag 'Enroll' %> <% end %> <% end %>
resources :students do member do post :add_course end end