动态创建对话框

时间:2014-03-17 18:06:14

标签: html ruby-on-rails ruby coffeescript slim-lang

我有两个部分形式,一个用于编辑数据,另一个用于添加。 两个表单包含相同数量的字段,除了我传递数据的编辑表单以及最初添加的表单时,它们都相同。

<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以显示?

我会非常感谢这些建议。 谢谢大家。

0 个答案:

没有答案