콘솔 아래 모델을 사용하여 &, 나는 성적 K
, 1
및 편집 양식이 선택 필드가 학교 2
연결 그 협회가 필드의 3 가지 항목을 올바르게 선택했음을 볼 수 있지만, 성적을 선택/선택 취소하려면 클릭하면 변경 사항이 저장되지 않습니다. 여기 매칭 최대 collection_select 출력 레일에서
# app/models/school.rb
class School < ActiveRecord::Base
has_many :grades_schools, inverse_of: :school
has_many :grades, through: :grades_schools
accepts_nested_attributes_for :grades_schools, allow_destroy: true
end
# app/models/grades_school.rb
class GradesSchool < ActiveRecord::Base
belongs_to :school
belongs_to :grade
end
# app/models/grade.rb
class Grade < ActiveRecord::Base
has_many :grades_schools, inverse_of: :grade
has_many :schools, through: :grades_schools
end
양식은 다음과 같습니다
# app/views/schools/_form.html.haml
= form_for(@school) do |f|
/<snip> other fields
= collection_select(:school, :grade_ids, @all_grades, :id, :name, {:selected => @school.grade_ids, include_hidden: false}, {:multiple => true})
/<snip> other fields + submit button
을 그리고 컨트롤러는 다음과 같다
# app/controllers/schools_controller.rb
class SchoolsController < ApplicationController
before_action :set_school, only: [:show, :edit, :update]
def index
@schools = School.all
end
def show
end
def new
@school = School.new
@all_grades = Grade.all
@grades_schools = @school.grades_schools.build
end
def edit
@all_grades = Grade.all
@grades_schools = @school.grades_schools.build
end
def create
@school = School.new(school_params)
respond_to do |format|
if @school.save
format.html { redirect_to @school, notice: 'School was successfully created.' }
format.json { render :show, status: :created, location: @school }
else
format.html { render :new }
format.json { render json: @school.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if @school.update(school_params)
format.html { redirect_to @school, notice: 'School was successfully updated.' }
format.json { render :show, status: :ok, location: @school }
else
format.html { render :edit }
format.json { render json: @school.errors, status: :unprocessable_entity }
end
end
end
private
def set_school
@school = School.find(params[:id])
end
def school_params
params.require(:school).permit(:name, :date, :school_id, grades_attributes: [:id])
end
end
나는 느낌 요점은 그이 내 문제는 collection_select
에 의해 생성 된 매개 변수와 강력한 매개 변수 사이의 불일치와 관련이 있습니다. 매개 변수. 이것들 중 하나 또는 둘 모두는 아마도 부정확하지만, 저의 삶은 제가 잘못하고있는 것을 보여주는 온라인 예제 코드를 찾을 수 없습니다.
변형 된 유사 콘텐츠로드를 시도한 후, 나는 현명함 끝에 있습니다! 도와 주셔서 미리 감사드립니다.