Rails渲染带有表单对象的部分对象 [英] Rails Rendering partial with form object
本文介绍了Rails渲染带有表单对象的部分对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于涉及Ajax,我想从下拉列表中选择:color后渲染部分'colordata'.我看不到主页的任何变化.偶数形式在colordata部分中未定义.
I want to render a partial 'colordata' after selecting a :color from the drop down list as it involves Ajax. I am not able to observe any change in main page. Even form is undefined in colordata partial.
这是我的模型Order模式
Here's my schema of model 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
Here's the Colordata.js.erb
$(".lot").innerHTML += "<%= escape_javascript(render(partial: 'colordata'),locals: {form: form) %>"
这是部分_colordata.html.erb
Here's the partial _colordata.html.erb
<%= form.label :lotnumber %>
<%= form.collection_select(:lotnumber, @lotdetail, @lotdetail.lotnumber,@lotdetail.lotnumber,prompt: "Select the Yarn")%>
错误是
- 表单未在_colordata.html.erb中定义
- 部分不追加到班级批次中.
先谢谢了.
推荐答案
要将部分对象附加到jquery,可以改用 append
方法. locals
应该在渲染器内部定义.因此,您可以像这样进行修复:
To append your partial with jquery, you can use the append
method instead. locals
should be define inside the render.
So you can fix like that :
$(".lot").append("<%= escape_javascript(render(partial: 'colordata', locals: { form: form })) %>")
这篇关于Rails渲染带有表单对象的部分对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文