作为一个 Rails 新手,我已经为 Activeadmin 问题苦苦挣扎了几天,我就是不知道如何解决它。
由于各种原因,在显示新 Invoice 对象的表单时,我有必要构建一个对象。我有路线
“admin/orders/:order_id/invoices/new" => "admin/invoices#new"
并且需要在显示 Invoice 表单时构建 order 对象。在任何人指出 ActiveAdmin 可以通过设置 ActiveAdmin has_many 来做到这一点之前,是的,我知道是这种情况,但鉴于我拥有的模型结构,这不适合这个应用程序(除其他事项外,并非所有发票都有链接订单)。
因此,我在 Invoice 模型上设置了 after_initialize,如下所示:
after_initialize :set_defaults
def set_defaults
@ordergroup = Ordergroup.new
@ordergroup.order = Order.find(@options[:order_id])
self.ordergroup << @ordergroup
end
简单的。唯一的问题是将参数中的 order_id 传递给模型。我一直在尝试一系列初始化函数,但无论我做什么似乎都会导致彻底的灾难。有人能指出我正确的方向吗?如果这不是 Activeadmin,并且我直接调用新的 Invoice,我可以执行 Invoice.new(params),但使用 Activeadmin,这似乎是作为表单函数的一部分自动调用的。
任何帮助将不胜感激。