存储拉姆达的哈希值部分
问题描述:
谁能告诉我这是怎么回事:存储拉姆达的哈希值部分
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代表它只是为用户模型中,一个不同的名称d我试图让该表显示CH代表(用户)的名字,但是这是行不通的:
value: -> f { view_context.fr_ch_rep_column(f) }
答
这是存储在一个散列值部分的拉姆达。 f
对应于在lambda被调用时将在lambda内部可用的变量。
if col[:value].present?
检查拉姆达
context.send(:column, key, col_options, &col[:value])
发送(按顺序)
-
column
作为符号 - 的密钥(即
ch_rep
或`用户) -
column_options
,其包括标题和其他非拉姆达键/值 - 指定为的拉姆达密钥,至
context