在Rails帮助器方法中,是否可以将列名指定为辅助方法变量然后使用它?

时间:2011-06-28 17:06:56

标签: ruby-on-rails ruby ruby-on-rails-3 helper

我想创建一个帮助方法,可以将Rails查找结果转换为句子,我指定结果,以及用于制作句子的列。例如:

  def items_to_sentence(items, label_column)
    items.map { |u| u.(label_column) }.to_sentence
  end

我只是不确定如何告诉Rails使用我指定的列。

谢谢你的期待。

1 个答案:

答案 0 :(得分:2)

如果items包含ActiveRecord对象(或任何其他具有与列名匹配的访问方法的对象),则可以使用send

def items_to_sentence(items, label_column)
  items.map { |u| u.send(label_column) }.to_sentence
end

或等效地:

def items_to_sentence(items, label_column)
  items.map(&(label_column.to_sym)).to_sentence
end

或者,如果那太吵了:

def items_to_sentence(items, label_column)
  sym = label_column.to_sym
  items.map(&sym).to_sentence
end