私はこの単純なヘルパーを持っています。値が文字列であるならば、私はそれぞれの変数にそれらを保存すると、すべての変数は、たとえば、カンマで区切られた値を使用して1つの文字列として返す:Rubyの文字列操作
"<a href=http://a>A</a>, <a href=http://b>B</a>, <a href=http://c>C</a>"
は、どのように私は、彼らが存在する場合にのみ、変数をマージすることができます?
私はこの単純なヘルパーを持っています。値が文字列であるならば、私はそれぞれの変数にそれらを保存すると、すべての変数は、たとえば、カンマで区切られた値を使用して1つの文字列として返す:Rubyの文字列操作
"<a href=http://a>A</a>, <a href=http://b>B</a>, <a href=http://c>C</a>"
は、どのように私は、彼らが存在する場合にのみ、変数をマージすることができます?
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
私はあなたの質問が正しいことを望みます。defined?(variable_name)
メソッドを使用して、変数が定義されているかどうかを確認できます。
こちらがお役に立てば幸いです。
[[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(',')
よう
は ''定義され、この場合には役に立たない?https://gist.github.com/e76db37917284e30dbb8 –
何かがトリックを行うべき:目的のテキストにラベルを回すと一緒に文字列を結合するために参加するためにマップ、空白のラベルとのペアを解消するために選択を使用します。
これは、シンタックスハイライトは、文字列リテラルのように混乱してしまいます残念です。 –
本当にクールなソリューション! – user984621
これは、Railsを使用しているか、ActiveSupportのコア拡張が必要であることを前提としています。これは、['blank?'](http://api.rubyonrails.org/classes/Object.html#method-i-blank- 3F)が由来する。もしそうでなければ 'val.nil? || val.empty? '。私はあなたがURLとデータベース参照のためにRailsを持っていると仮定しました。 –