存储拉姆达的哈希值部分

问题描述:

谁能告诉我这是怎么回事:存储拉姆达的哈希值部分

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