我正在尝试在我的活动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给出”。任何人都有关于如何设置的想法? 谢谢!
答案 0 :(得分:0)
通过将其包装在proc中来延迟对该方法的评估。将proc作为最后一个参数传递,而不是指定块,Ruby会用它代替您。
data = [[:label, proc { |transaction| transaction.event.to_s }], ...
...
column section[0], section[1]
...