将参数传递给Active Admin Table_for列

时间:2018-07-03 17:44:04

标签: ruby-on-rails activeadmin

我正在尝试在我的活动admin项目中设置table_for,以根据传递给我的方法显示信息。我对其进行设置,以便在模型中有一个数组数组。数组中的数组首先包含标签,然后包含要在列中运行的方法。我正在尝试通过以下方式进行设置:

panel "Acquired Shares" do
  table_for shareholder.acquired_shares_transactions do
    shareholder.acquired_shares_info.each do |section|
      column (section[0]) { |transaction| section[1] }
    end
  end
end

这是返回数组数组的方法的代码:

def acquired_shares_info
    data = [[:label, transaction.event.to_s], [:amount_of_shares, transaction.amount_of_shares], 
            [:share_price, transaction.event.share_price],
            [:total_price, (transaction.amount_of_shares * transaction.event.share_price)], 
            [:occurred_on, transaction.event.occurred_on],
            [:from_shareholder, transaction.event.from_shareholder], 
            [:share_transaction_action, transaction.event.share_transaction_action.name], 
            [:share_transaction_type, transaction.event.share_transaction_type.name]]
    return data 
end

这一切都是为了为我在数组中指定的每个标签和方法创建一个列。但是,我仍然坚持如何将标签和方法从数组传递到表的列中。我在这里尝试的方法不断在数组上抛出错误“ No block给出”。任何人都有关于如何设置的想法? 谢谢!

1 个答案:

答案 0 :(得分:0)

通过将其包装在proc中来延迟对该方法的评估。将proc作为最后一个参数传递,而不是指定块,Ruby会用它代替您。

data = [[:label, proc { |transaction| transaction.event.to_s }], ...
...
  column section[0], section[1]
...