Ruby on rails 使用AJAX更新相关表单内容…传递表单变量

Ruby on rails 使用AJAX更新相关表单内容…传递表单变量,ruby-on-rails,ajax,json,jquery,Ruby On Rails,Ajax,Json,Jquery,如何将表单变量传递给仅由AJAX用于将动态数据加载到表单部分的模板 我有一个属于课程的课程表,一个课程有很多可分级的项目。如果课程选择输入已更改…可分级_项的嵌套字段必须更新以反映所选课程 jQuery -> l = $("#course_lesson_id") l.on "change", -> $("#gradable_items_container").load("gradab

如何将表单变量传递给仅由AJAX用于将动态数据加载到表单部分的模板

我有一个属于课程的课程表,一个课程有很多可分级的项目。如果课程选择输入已更改…可分级_项的嵌套字段必须更新以反映所选课程

  jQuery ->
    l = $("#course_lesson_id")
    l.on "change", ->
      $("#gradable_items_container").load("gradable_items_inputs?lesson=#{l.val()}")
上面的脚本可以工作。它将gradable_items_inputs.html.erb中的代码加载到目标div中

可分级\u项目\u输入.html.erb GradedItem是存储每个GradableItem的等级的模型。GradedItem属于:gradable_项,属于课程

  <%= 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 %>

我尝试将表单变量作为数据参数和url参数传递,但它在gradable_items_inputs.html.erb文件中被解释为字符串。

不要传递表单变量。分别构造嵌套表单。因此,在您的操作中创建一个新的Object.new,这样嵌套表单(在类似于我的情况下)就不需要知道父表单对象。为了实现这一点,我还必须设置id:和name:以便为输入提供正确的结构。

上面的缺点是,如果有错误,发送到表单的原始对象将不会返回。因此,如果表单被重定向,页面被重新加载……它将不会有任何失败的数据。
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