将student_id连接到Rails中的submission_id

我试图将我的student_id连接到submission_id,但它不起作用。 我有一个名为submissionstudent的连接表。

学生Controller.rb:

class StudentsController < ApplicationController before_action :set_student, only: [:show, :edit, :update, :destroy] # GET /students # GET /students.json def index @students = Student.all end # GET /students/1 # GET /students/1.json def show end # GET /students/new def new @student = Student.new end # GET /students/1/edit def edit end # POST /students # POST /students.json def create @student = Student.new(student_params) respond_to do |format| if @student.save format.html { redirect_to @student, notice: 'Student was successfully created.' } format.json { render :show, status: :created, location: @student } else format.html { render :new } format.json { render json: @student.errors, status: :unprocessable_entity } end end end # PATCH/PUT /students/1 # PATCH/PUT /students/1.json def update respond_to do |format| if @student.update(student_params) format.html { redirect_to @student, notice: 'Student was successfully updated.' } format.json { render :show, status: :ok, location: @student } else format.html { render :edit } format.json { render json: @student.errors, status: :unprocessable_entity } end end end # DELETE /students/1 # DELETE /students/1.json def destroy @student.destroy respond_to do |format| format.html { redirect_to students_url, notice: 'Student was successfully destroyed.' } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_student @student = Student.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def student_params params.require(:student).permit(:name) end end 

提交Controller.rb:

 class SubmissionsController < ApplicationController before_action :set_submission, only: [:show, :edit, :update, :destroy] before_action :set_form # GET /submissions/new def new @submission = Submission.new @all_students = Student.all @submission_student = @submission.submissionstudent.build end # GET /submissions/1/edit def edit end # POST /submissions # POST /submissions.json def create @submission = Submission.new(submission_params) @submission.form_id = @form.id respond_to do |format| if @submission.save format.html { redirect_to @form, notice: 'Submission was successfully created.' } format.json { render :show, status: :created, location: @submission } else format.html { render :new } format.json { render json: @submission.errors, status: :unprocessable_entity } end end end # PATCH/PUT /submissions/1 # PATCH/PUT /submissions/1.json def update respond_to do |format| if @submission.update(submission_params) format.html { redirect_to @submission, notice: 'Submission was successfully updated.' } format.json { render :show, status: :ok, location: @submission } else format.html { render :edit } format.json { render json: @submission.errors, status: :unprocessable_entity } end end end # DELETE /submissions/1 # DELETE /submissions/1.json def destroy @submission.destroy respond_to do |format| format.html { redirect_to submissions_url, notice: 'Submission was successfully destroyed.' } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_submission @submission = Submission.find(params[:id]) end def set_form @form = Form.find(params[:form_id]) end # Never trust parameters from the scary internet, only allow the white list through. def submission_params params.require(:submission).permit(:conflict, :computer, :extra_time, :am_pm) end end 

Model Student.rb:

 class Student  :submissionstudent end 

Model Submission.rb:

 class Submission  :submissionstudent end 

加入表模型Studentsubmission.rb:

 class Submissionstudent < ActiveRecord::Base belongs_to :submission belongs_to :student end 

如果您需要更多代码,请告诉我,谢谢您的帮助

您可能需要根据最佳实践更改association_name,table_name,model_name和file_names,我相信它会起作用

  • 型号名称:Singular CamelCase,例如StudentSubmission
  • 模型文件名:单数snake_case(_分隔)例如student_submission
  • 表名:复数submissions
  • 加入表名:复数例如students_submissions #表名按字母顺序排列,学生将在稍后提交
  • has_many association:复数,例如student_submissions
  • belongs_to和has_one association:Singular例如submission

student.rb:

 class Student < ActiveRecord::Base has_many :student_submissions has_many :submissions, :through => :student_submissions end 

submission.rb:

 class Submission < ActiveRecord::Base belongs_to :form has_many :student_submissions has_many :students, :through => :student_submissions end 

student_submission.rb:

 class StudentSubmission < ActiveRecord::Base # join_table_name: students_submissions belongs_to :submission belongs_to :student end 

您还需要更改使用它们的关联

 @student_submission = @submission.student_submissions.build