Ich habe mehrere Lessons
und die meisten von ihnen haben einige Voraussetzungen, die selbst andere Lektionen sind. Das Prerequisite
Modell stellt die Beziehung dar und jeder hat eine lesson_id
und prerequisite_lesson_id
.Erstelle assoziiertes Objekt aus der Sammlung wählen
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
Ich versuche, einen Weg, um herauszufinden, so dass:
- Wenn ich eine neues
Lesson
erstellen und wählen Sie eine oder mehr Voraussetzungen von einemcollection_select
- mehr
Prerequisite
Objekte erstellt werden, basierend auf was ausgewählt wurde, wobei dielesson_id
die erstellteLesson
ID ist.
Hier ist ein Teil meiner Lektion Controller:
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
und meine Form:
<%= f.collection_select(:prerequisite_ids, Lesson.all, :id, :name, {}, {:multiple => true}) %>
UPDATE:
In den Protokollen, ich sehe:
"Lektion" => {"Name" => "Lektion 6", "high_tempo" => "200", "low_tempo" => "100", "Intervall" => "10", "advance_tempo" => "140", "voraussetzung_ids" => [ "", "3", "4"]}, "commit" => "speichern"} Unzulässige Parameter: prerequisite_ids'`
Dies ist, was im Protokoll ich sehe: ‚Parameter: {‚UTF-8‘=>“ ✓ "," authenticity_token "=>" THaOnTF4jPv6duqqyxRMP7IIfpEPS9MrFJ5Ib50WohwyvP8dd085P0UQeD47jW2a65tI3eNeHVU0IZwL6hYpWw == "," Lektion "=> {" name "=>" Lektion 6 "," high_tempo "=>" 200 "," low_tempo "=>" 100 "," Intervall "=>" 10 "," advance_tempo "=>" 140 "," vorausgesetzte_ids "=> [" "," 3 "," 4 "]}," commit "=>" Speichern "} Unerreichter Parameter: preventive_ids ' – AHinson
Ich habe meine Antwort aktualisiert, um ein anderes Problem anzugehen, von dem ich glaube, dass Sie es sehen. – BananaNeil
Ich habe immer noch den gleichen "Unerreichter Parameter" -Fehler. – AHinson