我有两个部分形式,一个用于编辑数据,另一个用于添加。 两个表单包含相同数量的字段,除了我传递数据的编辑表单以及最初添加的表单时,它们都相同。
<ul class="some_list">
<li class="li_line_1">
<div class="link_to_line_1">
<form class="edit_form_1" style="display: none">
<input ...>
...
</form>
</div>
</li>
<li ...>
form
form
form
...
etc
</li>
</ul>
我想只有一个表单,根据我的选择动态创建。
看起来如何。
有一些关于课程.form_opener
的链接。
<a class="form_opener" ...>...</a>
最初是隐藏的形式。
_simple_form.html.slim
=form_tag url, style: 'display: none', class: "edit_form_#{some_index}", remote: true do
=some_field_tag :some_number, number, class: 'form_number_edit', required: 'required', placeholder: 'Some text', maxlength: 14, autocomplete: 'off'
...
=submit_tag 'Submit', class: "btn submit"
表单在模板中显示任意次数。
some_view.html.slim
=render 'simple_form', ...
通过点击链接,我在父容器中找到相关表单并使其可见,然后使用它(添加或编辑数据)。
$(".main_container").on 'click', '.form_opener', (event)->
parentDiv = $(this).parent();
parent=$(this).parents("div").eq(1).attr('class').match(/\d+$/)[0]
form = $(".edit_form_#{parent}")
form.dialog
modal: true
title: 'Some title'
open: (event, ui) ->
commonDialogOpenListener event, ui # my listener, some initialization here
close: ( event, ui ) ->
$(form).dialog("destroy")
event.preventDefault()
解决方案相当繁琐,我认为不太可接受。特别是如果隐藏 形成了很多。
如何在controller
中动态创建表单并将表单传递给view
以显示?
我会非常感谢这些建议。 谢谢大家。