将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