【发布时间】:2017-03-15 03:25:12
【问题描述】:
我有多个Lessons,其中大多数都有一些先决条件,这些先决条件本身就是其他课程。 Prerequisite 模型代表关系,每个模型都有一个lesson_id 和prerequisite_lesson_id。
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是创建的Lessonid。
这是我的课程控制器的一部分:
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}) %>
更新:
在日志中,我看到:
"课程"=>{"名称"=>"第 6 课", "high_tempo"=>"200", "low_tempo"=>"100", "interval"=>"10", "advance_tempo"=>"140", "prerequisite_ids"=>["", "3", "4"]}, "commit"=>"Save"} 不允许 参数:prerequisite_ids'`
【问题讨论】:
标签: ruby-on-rails forms associations