如何将表单变量传递给仅由 AJAX 用于将动态数据加载到表单部分的模板?
我有一个属于_一堂课的课程表,而一堂课有_许多可分级的项目。如果课程选择输入发生更改... gradable_items 的嵌套字段必须更新以反映所选课程。
jQuery ->
l = $("#course_lesson_id")
l.on "change", ->
$("#gradable_items_container").load("gradable_items_inputs?lesson=#{l.val()}")
上述脚本有效。它将 gradable_items_inputs.html.erb 中的代码加载到目标 div 中。
gradable_items_inputs.html.erb
GradedItem 是存储每个 GradableItem 成绩的模型。一个 GradedItem belongs_to :gradable_item 和 belongs_to 课程。
<%= f.simple_fields_for :graded_items do |graded_item| %>
<%= gradable_item.name %>
<%= graded_item.input :gradable_item_id, input_html: { value: gradable_item.id } %>
<% end %>
当我将上述代码放入 gradable_items_inputs.html.erb 文件时,我收到“未定义的局部变量“f””错误。我尝试将 f.simple_fields_for 调用移到 AJAX 模板文件之外……但是,我得到了同样的错误,但是对于 Graded_item 变量。一种或另一种方式,我需要通过 javascript 将该表单变量传递给模板。
这是我的代码的概述:
parent form do |f|
f.association :lesson
nested_form do |n|
// the fields that go here are dependent on the lesson that is chosen above. A model called LessonGradableItem is a join model that holds what items a particular lesson should be graded against. I generate an input for each item...then save the result in the GradedItem model.
// since these inputs are loaded via AJAX from an external template, the form is being broken...how can I pass the n form variable to that file?
end
end
我尝试将表单变量作为数据参数和 url 参数传递,但它在 gradable_items_inputs.html.erb 文件中被解释为字符串。