想象一下3个选项的下拉列表:A,B,C
和ID为myform
的div。
当用户从列表中选择一个选项时,div的内容应该由与该选项对应的表单替换。问题是,形式没有任何共同之处。
我正在考虑以下列方式解决这个问题:
FormCreator
build_form
,它将一个类型作为参数(A / B / C)A.html.erb
,B.html.erb
和C.html.erb
有更好的方法吗?
答案 0 :(得分:1)
这是我如何做的指导:当选择某个选项时,例如A,使用AJAX GET AController#new作为JSON并返回由erb呈现的表单。比$('#myForm')。html(withResponse)。主要的想法是,在select.change事件中,您点击了正确的资源控制器新操作,并用它的响应替换div内容。
不完整的答案,但我希望它会给你一个想法
答案 1 :(得分:0)
为什么不隐藏表格并在选择列表选择时显示/隐藏它们?您从哪个控制器或操作呈现表单/选择列表无关紧要,但它们应该发布到自己的控制器并在验证失败时仅呈现先前发布的表单。
答案 2 :(得分:0)
使用javascript select来调用你的AJAX控制器:onchange => remote_function(...)
在你的控制器中=>
def FormCreator
if params[:form] == 1
render :update do |page|
page.replace_html 'form_div', :partial => 'form_1'
#make a file with just the form called _form_1.erb, this is called a partial
#because the file name starts with '_'
#form_div is the id of the div that holds all 3 forms.
end
end
#repeat for all forms
end