Rails使用表单对象渲染部分

我想从下拉列表中选择一个颜色后呈现部分’colordata’,因为它涉及Ajax。 我无法在主页面上观察到任何变化。 甚至forms在colordata partial中是不确定的。

这是我的模型Order模式

create_table "orders", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "design" t.integer "quantity" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "color" t.string "lotnumber" t.float "consumption", limit: 24 t.string "number" end 

这是ajax电话

  $("select[name='order[color]']").change(function(){ $.ajax({ url: "colordata", type: "post", data:{ "color": $(this).val() }, dataType: JSON, success: function(data){ } }); }); 

这是控制器。

 def colordata request.POST.each do |key, value| @color = value end @lotdetail= Master::Yarn.where('color like?', @color) respond_to do |format| format.js end end 

这是Colordata.js.erb

 $(".lot").innerHTML += "" 

这是部分_colordata.html.erb

   

错误是

  1. 表单未在_colordata.html.erb中定义
  2. 部分不会附加到课程批次中。

提前致谢。

要使用jquery附加partial,可以使用append方法。 应该在渲染内定义locals 。 所以你可以这样解决:

 $(".lot").append("<%= escape_javascript(render(partial: 'colordata', locals: { form: form })) %>")