Я создаю форму для модели «Обзор» и пытаюсь сгенерировать вложенный тег выбора с профессорами и курсами, которые они преподают.
Связь между профессорами и курсами очень многим.через объединительную таблицу «Предложение».
Отзыв относится к предложению, и я хочу получить идентификаторы предложений во вложенном теге выбора.
Вот мои модели:
class Professor < ApplicationRecord
has_many :offerings, :dependent => :destroy
has_many :courses, :through => :offerings
has_many :reviews, :through => :offerings
end
class Course < ApplicationRecord
has_many :offerings, :dependent => :destroy
has_many :professors, :through => :offerings
end
class Offering < ApplicationRecord
belongs_to :professor
belongs_to :course
has_many :reviews
end
class Review < ApplicationRecord
belongs_to :offering
belongs_to :user
end
А вот форма обзора:
<%= form_with(model: review, local: true) do |form| %>
<%= render 'shared/error_messages', locals: {resource: review} %>
<div class="form-group">
<%= form.label :body %>
<%= form.text_area :body, id: :review_body, class: 'form-control' %>
</div>
<div class="form-group">
<%= form.label :teaching_rating %>
<%= form.range_field :teaching_rating, in: 1..5, id: :review_teaching_rating, class: 'form-control slider' %>
</div>
<div class="form-group">
<%= form.label :offering %>
<%= form.grouped_collection_select :offering_id, Professor.order(:name), :courses, :name, :id, :name, class: 'form-control' %>
</div>
<div class="actions">
<%= form.submit "Submit", class: "btn btn-primary" %>
</div>
Что я должен передать в качестве параметра option_key_method
методу grouped_collection_select
, чтобы правильно получить ключи предложений?
Если есть лучший подход, такой как использование двух отдельных раскрывающихся списков для профессоров и курсов (с обновлением списков курсов при выборе профессора) или использование другого collection
или любого другого подхода, предложите его.Я новичок в рельсах.