2014-11-29 6 views
0

건물중인 앱에서 사용자가 이름 및 성을 저장할 수 있습니다. 이름은 필수 사항이지만 성은 없습니다. 어떤 경우에는 존재하지만 어떤 경우에는 그렇지 않습니다.문자열 찾기 및 바꾸기

다음 논리를 사용하여 LNAME을 연락처의 성으로 대체하려고 시도했습니다.

def replace_names 
    self.message.gsub! 'LNAME', contact.last_name 
    self.message.gsub! 'FNAME', contact.first_name 
    #METHOD 2  
    #h = {"FNAME" => contact.first_name,"LNAME" => contact.last_name} 
    #self.message.gsub!(/\w+/) { |m| h.fetch(m,m)} 
    #METHOD 3 
    #self.message.gsub!(/[FNAMELNAME]/, 'FNAME' => 1, 'LNAME' => 2) 
end 

이름과 성이 모두 존재하면 로직 (주석 처리되지 않은 로직)이 완벽하게 작동합니다. 그러나 성이 없으면 그 결과는 그 자리에 있습니다. 일부 장소에서는 LNAME이 LNAME으로 표시되며 일부 장소에서는 표시되지 않습니다.

나는 다른 몇 가지 SO 솔루션을 거쳤으며 성이 없을 때 예상대로 작동하지 않았습니다. 나는 정말로 제안을 감사 할 것이다.

+0

다른 데이터베이스 컬럼의 LNAMEs 있습니까 빈 문자열 등 텍스트 필드, PARAMS, 변수로 'LNAME'를 교체해야합니까? 'self.message'는 무엇입니까? 도움이 필요하시면 조금 더 많은 정보가 필요합니다. – nikkon226

+0

@ nikkon226 LNAME은 DB의 다른 열이며 문자열입니다. self.message는 text_area에서 사용자가 입력 한 메시지를 참조합니다. 기본적으로 연락처 드롭 다운, 제목 줄 및 메시지 영역이있는 전자 메일 양식/모델과 같습니다. – jasonng

답변

1

contact.last_name가 존재하지 않을 때, 당신은

self.message.gsub! 'LNAME', contact.last_name || '' 
관련 문제