У меня есть несколько Lessons
, и большинство из них имеют некоторые предварительные условия, которые сами являются другими уроками. Модель Prerequisite
представляет взаимосвязь, и каждый из них имеет lesson_id
и prerequisite_lesson_id
.Создание связанного объекта из коллекции select
class Lesson < ApplicationRecord
has_many :prerequisites
has_many :prerequisite_lessons, :through => :prerequisites
end
class Prerequisite < ApplicationRecord
belongs_to :lesson
belongs_to :prerequisite_lesson, :class_name => "Lesson"
end
Я пытаюсь выяснить способ, так что:
- Когда я создаю новый
Lesson
и выбрать один или несколько предпосылок изcollection_select
- кратному
Prerequisite
объекты создаются на основе что было выбрано, при этомlesson_id
является созданным идентификаторомLesson
.
Вот часть моего контроллера урока:
def create
@lesson = Lesson.new(lesson_params)
if @lesson.save
if @lesson.prerequisite_ids.length > 0
@lesson.prerequisite_ids.each do |p|
Prerequisite.new(lesson_id: @lesson.id, prerequisite_lesson_id: p)
end
end
flash[:notice] = "Lesson created..."
redirect_to root_url
else
render :new
end
end
...
def lesson_params
params.require(:lesson).permit(
:name,
:high_tempo,
:low_tempo,
:interval,
:advance_tempo,
prerequisites_attributes: [
:lesson_id,
:prerequisite_lesson_id
]
)
end
и моя форма:
<%= f.collection_select(:prerequisite_ids, Lesson.all, :id, :name, {}, {:multiple => true}) %>
UPDATE:
В журналах, я вижу:
"Lesson" => {"name" => «Урок 6», «high_tempo» => «200», «low_tempo» => «100», «interval» => «10», «advance_tempo» => «140», «prerequisite_ids» => [ "", "3", "4"]}, "совершить" => "Сохранить"} самовольных параметра: prerequisite_ids'`
Это то, что я вижу в журнале: «Параметры: {„utf8“=>» ✓ "," authenticity_token "=>" THaOnTF4jPv6duqqyxRMP7IIfpEPS9MrFJ5Ib50WohwyvP8dd085P0UQeD47jW2a65tI3eNeHVU0IZwL6hYpWw == "," lesson "=> {" name "=>" Lesson 6 "," high_tempo "=>" 200 "," low_tempo "=>" 100 "," interval "=>" 10 "," advance_tempo "=>" 140 "," prerequisite_ids "=> [" "," 3 "," 4 "]}," commit "=>" Save "} Параметр unpermitted: prerequisite_ids ' – AHinson
Я обновил свой ответ, чтобы решить другую проблему, которую, я считаю, вы видите. – BananaNeil
К сожалению, по-прежнему я получаю такую же ошибку «Unpermitted parameter». – AHinson