Rails通过via关联创建

时间:2015-09-21 21:29:52

标签: ruby-on-rails activerecord ruby-on-rails-3.2

学生模特:

ping

课程模型:

class Student < ActiveRecord::Base
  has_many :courses
end

如何通过学生创建课程,以便获得[课程编号:1,student_id:1]。我尝试过以下方式,但它给了我student_id nil。

课程控制器:

class Course < ActiveRecord::Base
  belongs_to :student
end

1 个答案:

答案 0 :(得分:0)

你的解决方案有几个小问题,但是如果我很清楚你想要做什么,这基本上就是在courses_controller的某个动作中创建与学生相关的Course对象,你需要做的就是添加那些行吃了courses_controller动作:

Courses_controller:

class CoursesController < ApplicationController

  ...

  def new
    @student = Student.find(params[:student_id])
    @course = Course.new student_id: @student.id
  end 

  def create
    @course = Course.new(params[:course])
    @course.save
  end

  ... 

end

在您的视图中,您正在调用new_course_path,您应该传递:student_id值,如下例所示:

new_course_path(student_id: @student.id)