Rails - проблема, связанная с восстановлением массива чекбоксов - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать реестр для школы, я дошел до того, что мне пришлось создавать уроки класса и сохранять в нем присутствие / отсутствие. Я думаю о том, чтобы сделать так, чтобы коллекция collection_check_boxes собрала всех учеников, принадлежащих к классу, для которого мы записываем урок.

На этом этапе флажок правильно отображается в перспективе, но он не заполняет массив student_id урока при его создании.

Il controller

  def new
    @lesson = Lesson.new
    @group_id = params[:group_id]
    @students = Student.where(:group_id => @group_id)
  end
  def create
    @lesson = Lesson.new(lesson_params)
    respond_to do |format|
      if @lesson.save
        format.html { redirect_to @lesson, notice: 'Lesson was successfully created.' }
        format.json { render :show, status: :created, location: @lesson }
      else
        format.html { render :new }
        format.json { render json: @lesson.errors, status: :unprocessable_entity }
      end
    end
  end

    def lesson_params
      params.require(:lesson).permit(:date, :starts_at, :finishes_at, :materials, :areas, :homework, :group_id, :student_id)
    end

Хотя представление, которое вызывает флажки

  <div class="field">
  <%= form.collection_check_boxes :student_id, Student.where(:group_id => @group_id).order(name: :asc), :id, :name, {}, { multiple: true } %>
  </div>  

Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

хорошо, я решил

Я должен был объявить массив между параметрами, разрешенными в контроллере

def lesson_params
      params.require(:lesson).permit(:date, :starts_at, :finishes_at, :materials, :areas, :homework, :group_id, :student_id => [] )
    end

Я надеюсь, что это может помочь кому-то еще.

0 голосов
/ 22 апреля 2020

Попробуйте это

<%= form.collection_check_boxes :student_ids, Student.where(:group_id => @group_id).order(name: :asc), :id, :name %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...