2012-04-07 3 views
1

나는이 간단한 도우미가 있습니다. 값이 문자열이있는 경우에, 나는 각각의 변수로 저장하려면 다음 모든 변수는 예를 들어, 쉼표로 구분 된 값을 하나의 문자열로 반환 :루비 문자열 조작

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

가 어떻게 그들이 존재하는 경우에만 변수를 병합 할 수 있습니다 ?

답변

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 
+0

정말 멋진 솔루션! – user984621

+0

여기서는 Rails를 사용 중이거나 ActiveSupport의 핵심 확장이 필요하다고 가정합니다. 여기에서 ['blank?'] (http://api.rubyonrails.org/classes/Object.html#method-i-blank- 3F)가 나온다. 그렇지 않으면'val.nil? || val.empty? '. URL과 데이터베이스 참조 때문에 레일스가 있다고 가정했습니다. –

0

귀하의 질문에 대한 답변을 얻으시기 바랍니다. 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(',') 

같은

+1

는'정의'이 경우 도움이되지 것입니다 : https://gist.github.com/e76db37917284e30dbb8 –

2

뭔가 트릭을 할해야한다.

+0

그것은 구문 하이 라이터 문자열 리터럴에 혼란스러워 유도 할 수있는 수치이다. –