1

아래의 코드는 일반 Rails보기 (웹 페이지)에 이미지를 표시하지만 메일러보기 (예 : 앱에서 보내는 이메일)에서 이미지를 표시하지 않는 이유는 무엇입니까? 이미지는/app/assets/images에 있습니다.이미지 태그가 메일 뷰가 아닌 일반보기에서 작동하는 이유는 무엇입니까?

<%= image_tag "hr1.png" %> 
<%= image_tag "pic_mountain.jpg" %> 
<%= link_to image_tag("hr1.png", alt: "Sample alt text"), 'http://google.com' %> 

다음은 사용자에게 보내지는 HTML 전자 메일에 이미지를 포함시키는 가장 좋은 방법입니까? 어떻게 든 이미지를 www.url.com/images/sample_pic.jpg에 저장해야합니까? 그렇다면 어떻게해야합니까? ActionMailer에서 상속받은 메일러 클래스를 사용하고 있습니다. 또한 Rails 4.1.6입니다. 감사! 당신이 게시

+0

확인해보십시오. http://stackoverflow.com/questions/4918414/what-is-the-right-way-to -embed-image-into-email-using-rails –

답변

1

ERB 양식의 HTML을 생성

<img src="/assets/hr1.png" /> 

는 이미지 경로 만 포함하고 브라우저가 호스트 및 프로토콜을 포함하는 페이지가로드를 사용하는 즉, (간결을위한 자산 다이제스트를 Iglorying) 에서.

전자 메일에는 이러한 호스트가 없기 때문에 작동하지 않습니다. URL에 호스트를 포함 시키거나 이미지를 인라인 첨부 파일로 추가 할 수 있습니다.

최초의 가장 기본적인 방법은 당신이 계속해서 또 다시이 작업을 수행 할 필요가 없도록 당신은 또한 당신의 우편물에 default_url_options을 설정할 수 있습니다

image_tag(image_url("foo", host: "example.com")) 

의 라인을 따라 뭔가를 할 것입니다. 처음보기에 (당신의 우편물에) 첨부 파일로 다음

attachments.inline['foo.png'] = File.read(Rails.root.join("app", "assets", "images", "foo.png") 

과 이미지를 추가 인라인 첨부

그렇게처럼 사용

<%= image_tag attachments['foo.png'].url -%> 

참고이 당신을 켜지는지 전자 메일을 여러 부분으로 구성된 전자 메일로 보내므로 내용 유형을 text/html로 설정하지 않아야합니다.

+0

호스트 지정이 작동하지 않는 것 같습니다. 그러나 attachment.inline을 사용한 두 번째 제안은 mail_type : text/html 옵션을 제거한 후에 작동합니다. 이것이 주된 문제였습니다. 또한 파일 경로를 다음과 같이 지정했습니다. attachments.inline [ 'pic_mountain.jpg'] = File.read ("app/assets/images/pic_mountain.jpg") –

+0

아, 예, URL 버전에서 실수했습니다. –