如何将表单变量传递给仅由AJAX用于将动态数据加载到表单的某个部分的模板?
我有一个属于课程的课程表格,以及一个课程has_many gradable_items。如果更改了课程选择输入,则必须更新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中。
GradedItem是存储每个GradableItem的成绩的模型。 GradedItem belongs_to:gradable_item并且属于课程。
<%= 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文件时,我得到'undefined local variable“f”'错误。我尝试在AJAX模板文件之外移动f.simple_fields_for调用...但是,然后我得到了相同的错误,但是对于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文件中被解释为字符串。
答案 0 :(得分:0)
不要传递表单变量。分别构造嵌套表单。因此,在您的操作中创建一个新的Object.new,以便嵌套的表单(在类似于我的情况下)不需要知道父表单对象。为了使这项工作,我还必须设置id:和name:以便输入被赋予正确的结构。