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_valueb_valuec_valueデータベースから取得しています。値が文字列の場合、それらをそれぞれの変数に保存すると、すべての変数がカンマで区切られた値を持つ 1 つの文字列として返されます。次に例を示します。

"<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 に答える