2017-12-27 27 views
1

현재 ActionMailer를 사용하여 QR 코드를 생성 할 수는 있지만 실제로 해당 QR 코드를 이메일로 보낼 수 없습니다. 요소가 제대로 전달되지만 이미지가 손상되어 alt 만 표시됩니다. 내 ActionMailer 미리보기에서 QR 코드를 볼 수 있지만 이메일을 보내거나받을 때 어떤 이유로 인해 진행되지 않습니다.Rails ActionMailer를 사용하여 이메일의 QR 코드를 렌더링

barby를 사용하여 CompanyLeadRsvpTicketModel에서 QR 코드를 만듭니다. 여기

내 모델에서 코드입니다 :

def generate_qr(text) 

    require 'barby' 
    require 'barby/barcode' 
    require 'barby/barcode/qr_code' 
    require 'barby/outputter/png_outputter' 

    barcode = Barby::QrCode.new(text, level: :q, size: 5) 
    base64_output = Base64.encode64(barcode.to_png({ xdim: 5 })) 
    return "data:image/png;base64,#{base64_output}" 

end 

그리고 여기 내보기에 코드입니다 :

<h1>Hi <%= @company_lead_rsvp_ticket.company_lead[0].first_name%>! Here is your RSVP ticket for the <%[email protected]%>!</h1><h2>Please bring this ticket to check in for the event.</h2><%=image_tag("#{@company_lead_rsvp_ticket.generate_qr(@company_lead_rsvp_ticket.otp_secret_key)}", :alt => "qrcode")%><p><%= @company_lead_rsvp_ticket.confirmation %></p> 

답변

1

나는이 유사한 다른 question을 발견하고 google-qr gem로가는 종료 google charts api을 사용합니다.

정말 사용하기 쉽고 매력처럼 작동했습니다! 내 모델에서

:

def generate_qr(text) 
require 'google-qr' 
chart = GoogleQR.new(:data => "#{text}", :size => "500x500", :margin => 4, :error_correction => "L") 
return chart.to_s end 

내보기에서 :

<%=image_tag("#{@company_lead_rsvp_ticket.generate_qr(@company_lead_rsvp_ticket.otp_secret_key)}", :alt => "qrcode")%> <br/> 

google-qr는 텍스트 입력을 받아들이는 QR 코드를 생성하고 보안 URL을 사용하여 호스트에 사용합니다. google-qr으로 생성 된 데이터를 가져 와서 문자열로 변환하면 이미지 소스로 사용할 수 있습니다.

가장 좋은 점은 브라우저에서이 URL로 직접 이동하려고하면 큰 뚱뚱한 400 오류가 발생하며 QR 코드를 볼 수 없다는 것입니다.