我有一些不同的活动记录集。每个记录集都使用相同的代码进行渲染。
原始代码如下所示:
columns do
column do
panel "Panel" do
table_for Record.where( ... ) do
column("id") {|r| r.id }
column("field") {|r| r.field }
end
end
end
end
我其实想要这样的事情:
# (wrong code) (EDIT: actually work fine - it is not wrong)
def render_table(records)
table_for records do
column("id") {|r| r.id }
column("field") {|r| r.field }
end
end
panel "Panel" { render_table Record.where( ... ) }
同样如此:
# ( wrong code )
def render_table_fields
render lambda do
column("id") {|r| r.id }
column("field") {|r| r.field }
end
end
panel "Panel" do
table_for Record.where( ... ) { render_table_fields.call }
end
如何重构以提取表格渲染代码?
如何从函数返回块或lambda并将其作为块传递给另一个函数?