0

我正在构建一个 Invoicing 应用程序,其中Invoice可以有各种Items

在发票视图中,每个项目都有这样的一行:

<%= f.text_field :price %>
<%= f.text_field :quantity %>

可以使用 Ajax 将新项目添加到发票中,即无需重新提交页面。

这工作得很好。

不过,如果所有项目的总数也可以通过 Ajax 更新,而用户不必每次都重新提交页面,那就太好了。

谁能告诉我如何做到这一点?

谢谢你的帮助。

4

2 回答 2

0

这取决于您现有的代码。您是否以 JSON 格式提交/接收数据?尝试使用某种客户端处理(纯 javascript、jQuery 或其他框架)。

:remote或者您使用带有 js.erb 模板的更传统的 Rails表单?如果是这样,您可以在 create.js.erb 中更新发票总额。类似的东西(我假设发票总额用 id="total" 的标签包装,项目属于发票,发票有总计字段)

... # your current code
$("#total").update("<%= escape_javascript(@item.invoice.total)%>");

删除和更新操作相同。

于 2012-09-20T16:04:23.807 回答
0

您应该考虑使用某种前端 MVC 或 MVVM 框架来处理这个问题。看一下knockoutjs:

通过应用模型-视图-视图模型 (MVVM) 模式来简化动态 JavaScript UI

http://learn.knockoutjs.com/#/?tutorial=collections <-- 本教程几乎准确地展示了您所追求的。

基本上,您将设置一个 viewModel 来表示您的视图,该视图将具有一组行条目,这将是“可观察的”,这意味着无论何时更改(添加到或从中删除)您对它的绑定都会更新. 例如,它可以是与每个行项目绑定的 with 。

然后你可以有一个计算出的 observable 会自动更新

于 2012-09-20T14:02:36.457 回答