Ruby on rails 在显示页面上新建/编辑操作::最佳实践问题

Ruby on rails 在显示页面上新建/编辑操作::最佳实践问题,ruby-on-rails,forms,Ruby On Rails,Forms,我正在设计一个仪表板页面,在一个页面上汇总来自多个模型的数据。我还希望在该页面上包含用于创建新项目的表单 经过一些实验后,我意识到我需要一些关于这种情况下最佳实践的建议。。。以下是我尝试的两种方法 1) 正在使用嵌套字段\u form_for @job do |j| j.fields_for :invoice do |i| i.fields_for :charges do |c| c.text_field :amount 或2) 使用嵌套方法,问题是现在我有了一个新对象

我正在设计一个仪表板页面,在一个页面上汇总来自多个模型的数据。我还希望在该页面上包含用于创建新项目的表单

经过一些实验后,我意识到我需要一些关于这种情况下最佳实践的建议。。。以下是我尝试的两种方法

1) 正在使用嵌套字段\u

form_for @job do |j|
  j.fields_for :invoice do |i|
    i.fields_for :charges do |c|
      c.text_field :amount
或2)

使用嵌套方法,问题是现在我有了一个新对象,当它遍历现有对象时,它会在我的show视图中抛出一个扳手。突然,由于新对象尚未保存,有时尝试渲染所有创建的_失败

方法2)的问题是,要么我将每个表单发布到它自己的控制器来处理它,但如果它没有验证,我需要呈现show视图。。。这意味着我必须为每个控制器提供一个表单,其中包含所有实例变量和方法等,以呈现页面

我还没有完全弄清楚错误处理是如何工作的。有时我的表单上会标记fieldWitherrors类,有时则不会。我一直在尝试这两种方法,但我很难找到它


有人能给我建议一下我应该走的方向吗?

如果你只需要新的收费,那么后一种方法就是最好的选择。请注意,它们的作用基本相同:

form_for @job.invoice.charges.build do |c|

使用第二种情况,在保存新费用之前,如果使用@charge=。。。对于控制器,您可以在验证失败时重新呈现表单

form_for @job.invoice.charges.build do |c|
@charge = Charge.new(:invoice_id => @job.invoice.id)
form_for @charge do |c|