【问题标题】:Rails Dynamic Form Fields & AJAX SubmitRails 动态表单字段和 AJAX 提交
【发布时间】:2011-10-09 16:56:14
【问题描述】:

我有一个带有嵌套属性的表单的 Ruby on Rails 应用程序。此表单允许使用一些 javascript 动态添加字段。该表单还通过 AJAX 在模糊上提交。

一切都很好,除了一个围绕动态添加字段的问题。

通过 Javascript 添加动态字段时,会为其分配一个唯一 ID。但是,表单字段的 ID 和名称模式显然与保存字段后 Rails 生成的名称不匹配。

由于 AJAX 表单提交,每次表单更改时,动态添加的字段都会创建一个新的 DB 条目。

我需要找到一种方法来优雅地处理这样一个事实,即我需要在 AJAX 提交后检索 rails 生成的表单并修改/替换页面上的表单 - 否则新字段将继续复制!

您可以在以下位置查看我的代码:https://github.com/michaelward82/WeddingPlanner/tree/UI

(抱歉,如果我的 Rails 代码不是最干净的,这是我第一次真正尝试真正的 Rails 项目,我仍在学习模式)

【问题讨论】:

  • 您是否有理由需要在创建父记录之前允许创建子记录(通过您的 AJAX 请求)?
  • 父级已经创建。预算与用户同时创建,并且属于该用户。通过预算显示操作,我们使用嵌套字段来允许将预算项目添加到预算中。问题是任何动态添加的预算项目都被视为新项目,直到用户刷新页面并获得由 rails 生成的表单。刷新页面或避免使用 AJAX 感觉不是一个优雅的解决方案。
  • 听起来你需要BudgetItems#new 来返回没有布局的新对象,然后你的javascript可以替换页面上该对象的HTML。
  • 我找到了返回整个表单部分的方法。这是不切实际的,因为表单更新太频繁了。目前,我已经放弃使用提交按钮并允许 rails 重新生成表单。我不确定从 AJAX 自动保存生成的负载是否太多而无法处理。如果有人能想出一个优雅的解决方案......
  • 我遇到了类似问题的解决方案,也许我可以提供帮助。能再提供一下代码吗?链接坏了:)

标签: ruby-on-rails ajax forms ruby-on-rails-3.1


【解决方案1】:

我认为您缺少的是 belongs_to 关联上的 :dependent => :delete_all 参数。这使得 Rails 在保存新集合时会删除旧的预算项目:

# budget_item.rb
belongs_to :budget, :dependent => :delete_all

【讨论】:

    猜你喜欢
    • 2019-01-09
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多