program tip

asset_host를 사용하지 않는 메일러의 image_tag

radiobox 2021. 1. 11. 07:57
반응형

asset_host를 사용하지 않는 메일러의 image_tag


image_tag는 내가 설정 한 asset_host를 사용하지 않습니다. 이유는 무엇입니까? 내가 생각할 수있는 유일한 것은 그것이 메일러라는 것과 관련이 있다는 것입니다.

config / environment / development.rb

config.action_controller.asset_host = "http://localhost:3000"

myMailer.rb

<%= image_tag "logo.png", :style=>"margin-left:10px; padding-bottom:15px;" %>

다음과 같이 렌더링 :

<img alt="Logo" src="/images/logo.png?1303090162" style="margin-left:10px; padding-bottom:15px;" />

콘솔에서 :

> MyApp::Application.config.action_controller
#<OrderedHash {… :asset_host=>"http://localhost:3000", …}>

이메일에 표시되므로 전체 경로 URL을 만들려면 image_tag가 필요합니다.


나는 전에 틀렸다. 이것이 필요한 솔루션입니다 (asset_host 구성이 통합되는 rails 3.1까지) :

config.action_mailer.asset_host = "http://localhost:3000"

Rails 3.1과 3.2에서 config.action_controller.asset_host와 config.action_mailer.asset_host를 모두 지정해야합니다.

이메일 및 비 이메일보기 모두에서 image_tag에 호스트 이름을 추가하려면 환경 파일에 다음을 추가하십시오.

config.action_controller.asset_host = 'http://localhost:3000'
config.action_mailer.asset_host = config.action_controller.asset_host

여기서 'http : // localhost : 3000'은 호스트 URL (및 해당되는 경우 포트)로 대체되어야합니다.

Rails 3.2.x에서도 action_controller와 action_mailer 모두에 설정해야합니다.


왜 할 수 없는지에 대한 잘못된 코드는 다음과 같습니다.

# actionpack/lib/action_view/helpers/asset_paths.rb, line 27
def compute_public_path(source, dir, ext = nil, include_host = true)
  # More code up here....

    if controller && include_host
      has_request = controller.respond_to?(:request)
      source = rewrite_host_and_protocol(source, has_request)
    end
end

다음은 GH의 문제가되는 파일입니다. https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/asset_paths.rb

ActionMailer View 템플릿에는 Controller가 없기 때문에 asset_host를 기반으로 다시 작성하라는 명령을받을 수 없습니다. 이것은 아마도 Rails 핵심 팀에 공개 된 티켓 일 것입니다.

다음 구성을 시도하고 도움이되는지 확인할 수 있습니다.

config.action_mailer.default_url_options = {:host=>"localhost", :port=>3000, :protocol=>"http://"}

그래도 효과가있을 것이라고 확신합니다 url_for.

참조 URL : https://stackoverflow.com/questions/5739819/image-tag-in-mailer-not-using-asset-host

반응형