我想呈现部分' colordata'从下拉列表中选择:color后,因为它涉及Ajax。我无法观察到主页面的任何变化。在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 += "<%= escape_javascript(render(partial: 'colordata'),locals: {form: form) %>"
这是部分_colordata.html.erb
<%= form.label :lotnumber %>
<%= form.collection_select(:lotnumber, @lotdetail, @lotdetail.lotnumber,@lotdetail.lotnumber,prompt: "Select the Yarn")%>
错误
提前致谢。
答案 0 :(得分:0)
要使用jquery附加部分,可以使用append
方法。应在渲染内定义locals
。
所以你可以这样解决:
$(".lot").append("<%= escape_javascript(render(partial: 'colordata', locals: { form: form })) %>")