1

我有这个简单的帮手:

def printe_result(data)
  a_var = ('<a href="http://'+data.a_value+'>A</a>' unless (data.a_value.nil? || data.a_value.empty?))
  b_var = ('<a href="http://'+data.b_value+'>B</a>' unless (data.b_value.nil? || data.b_value.empty?))
  c_var = ('<a href="http://'+data.c_value+'>C</a>' unless (data.c_value.nil? || data.c_value.empty?))

  return ...
end

a_value, b_value,c_value我从数据库中获取。如果值是字符串,我想将它们保存到相应的变量中,然后所有变量作为一个字符串返回,其中的值用逗号分隔,例如:

"<a href=http://a>A</a>, <a href=http://b>B</a>, <a href=http://c>C</a>"

只有存在变量时,如何才能合并变量?

4

3 回答 3

4
def printe_result(data)
  { 'A' => data.a_value, 'B' => data.b_value, 'C' => data.c_value }.map do |name, val|
    "<a href='http://#{val}'>#{name}</a>" unless val.blank?
  end.compact.join(',')
end
于 2012-04-07T16:48:10.480 回答
2

就像是

 [[a_value,'A'],[b_value,'B'],[c_value,'C']].select {|(value, label)| !value.blank?}.
    map {|(value, label)| %q[<a href="http://#{value}">#{label}</a>]}.join(',')

应该做到这一点:使用 select 消除带有空白标签的对, map 将标签转换为所需的文本,并 join 将字符串连接在一起。

于 2012-04-07T16:45:00.783 回答
0

我希望我能正确回答您的问题 - 您可以使用该defined?(variable_name)方法检查是否已定义变量。

我希望这有帮助!

于 2012-04-07T16:37:26.263 回答