1

假设我有一个包含许多字段的复杂嵌套表单。

我想以 ajax 的方式一个接一个地编辑它的字段,这样每次我看到表单时 - 它都是“显示”样式(没有更改信息的字段),但可以切换任何特定字段或字段组使用它自己的“保存”或“更新”按钮来“编辑”模式。

解决这种问题,我最终有两种方法:

  1. 扩展使用Ryan Bates 的 complex-form-examples
    这种方式的缺点是每个字段(或字段组)都需要自己的代码(即javascript:'insert_fields'),它会呈现相应的'edit'样式表单,因此导致页面被javascripts淹没。

  2. 第二 - 是通过 ajax 通过特殊控制器操作(即 get_partial)加载相应编辑部分的统一过程,它通过“编辑”形式“渲染:更新”给定字段的区域。
    对于给定的字段或字段组,我有“编辑”和“显示”的部分内容。当我需要将该字段切换到编辑模式时,我link_to ...,'/.../get_partial?partial=foo',:remote => true通过 ajax 发送带有必要参数的请求(),并且一些控制器#action 通过 javascript 呈现该部分。

我认为第二种方法更好,但我不知道如何优化它最好。

这个问题有没有更优雅的解决方案?

4

1 回答 1

0

如果您生成一个普通的“编辑”表单(包含所有嵌套字段等),然后让 javascript 隐藏字段并在其旁边添加字段文本和编辑链接,该怎么办。例如,假设您的表单如下所示:

= form_for @foo do |f|
  = f.text_field :name

你的javascript会这样做(1):

= form_for @foo do |f|
  = f.text_field :name, :class => "hide"
  <the value of the field here>
  = link_to "edit", "#"

然后让您的 javascript 在编辑链接中添加一个点击事件,点击该事件后会执行以下操作:

= form_for @foo do |f|
  = f.text_field :name
  = f.submit "Save"

那么你需要更多的 javascript 来使保存按钮提交表单(ajax),然后返回上面的(1)

于 2011-02-12T04:28:44.363 回答