如何将表单变量传递给仅由AJAX用于将动态数据加载到表单部分的模板?使用AJAX更新依赖表单内容...传递表单变量
我有一门课属于belongs_to课,而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中。
gradable_items_inputs.html.erbGradedItem是其中对于每个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文件,我得到“未定义的局部变量‘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
我试图传递表单变量作为数据PARAM和URL PARAM,但它得到的gradable_items_inputs.html.erb文件解读一个字符串。
上述的缺点是发送到表单的原始对象不会是返回的错误。所以,如果表单被重定向并且页面重新加载......它将不会有任何失败的数据。 – hellion