有谁能告诉我这里发生了什么:
value: -> f { view_context.fr_user_column(f) }
这是来自更大的哈希:
def self.columns
{
user: {
title: "Applicant",
value: -> f { view_context.fr_user_column(f) }
},
ch_rep: {
title: "CH Rep",
value: -> f { view_context.fr_ch_rep_column(f) }
}
}
在方法中使用它来创建表:
def self.render_zable_columns(context, options = {})
self.columns.each do |key, col|
next if options[:except] && options[:except].include?(key)
col_options = {title: col[:title]}
col_options[:class] = "franchise_#{key}"
col_options[:sort] = col.key?(:sort) ? col[:sort] : true
if col[:value].present?
context.send(:column, key, col_options, &col[:value])
else
context.send(:column, key, col_options)
end
end
end
我问的原因是因为我还有一个CH代表,它只是User模型的另一个名称,我正在尝试让表格显示CH代表(用户)名称,但这不起作用:
value: -> f { view_context.fr_ch_rep_column(f) }
答案 0 :(得分:2)
这是在哈希的值部分中存储lambda。 f
对应于在调用lambda时lambda内部可用的变量。
if col[:value].present?
检查lambda
context.send(:column, key, col_options, &col[:value])
发送(按顺序)
column
作为符号ch_rep
或`用户)column_options
,其中包含标题和其他非lambda键/值value
密钥的lambda为context