[英]Active admin passing params after_initialize
作為Rails的新手,我已經為Activeadmin問題苦苦掙扎了幾天,而我只是想不出解決方法。
由於各種原因,當我顯示新的Invoice對象的表單時,我有必要構建一個對象。 我有路線
“admin/orders/:order_id/invoices/new" => "admin/invoices#new"
並且需要在顯示“發票”表單時構建訂單對象。 在任何人指出ActiveAdmin可以通過設置ActiveAdmin has_many來做到這一點之前,是的,我知道是這種情況,但是考慮到我擁有的模型結構,這不適合此應用程序(除其他事項外,並非所有發票都具有鏈接順序) )。
因此,我在發票模型上設置了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時,它似乎是作為窗體函數的一部分自動調用的。
任何幫助將不勝感激。
答案似乎只是跳過所有after_initialize和初始化麻煩,然后在Activeadmin中重寫新方法
admin/invoice.rb
def new
@invoice = Invoice.new
if params[:order_id]
@invoice.linknew(params[:order_id])
end
end
。
invoice.rb
def linknew(order_id = {})
@order_id = order_id
@ordergroup = Ordergroup.new
@ordergroup.order = Order.find(@order_id)
self.ordergroup << @ordergroup
end
我花了兩天的時間才弄明白...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.