我想在ActiveAdmin中创建一个动态选择表单。 假设用户有多个订单。每个Order都有一个属性pay(boolean)。 选择用户后,下一个选择是该用户的订单付款。
option_groups_from_collection_for_select(User.order(:email), :orders, :email, :id, :name)
但我不知道如何仅显示付款订单。
答案 0 :(得分:3)
您可以在User
模型上定义一个方法,该方法将替换您传入的:orders
参数。此方法应返回已支付的orders
。
尝试使用关联声明(这将为您添加方法):
class User < ActiveRecord::Base
has_many :orders
has_many :paid_orders, class_name: 'Order', -> { where pay: true }
end
现在,您的user
个实例将使用paid_orders
方法返回orders
属性为pay
的{{1}}。
现在将表单助手更改为:
true
应该这样做。
这里的想法是option_groups_from_collection_for_select(User.order(:email), :paid_orders, :email, :id, :name)
参数是:paid_orders
实例上方法的名称。您可以自由定义任何您想要的方法,甚至可以手动定义:
User