【问题标题】:elegant way to File.read assets in development开发中 File.read 资产的优雅方式
【发布时间】:2020-09-03 18:03:09
【问题描述】:

我有以下代码

module EmailHelper
  def email_image_tag(image, **options)
    attachments.inline[image] = File.read(image_path(image))
    image_tag attachments[image].url, **options
  end
end

在生产中这会引用带有哈希的正确图像,因为图像资源是预编译的,但是在开发中这会引发文件读取异常。

有没有一种优雅的方式来执行 File.read 而无需检查 Rails.env.development 吗?

【问题讨论】:

    标签: ruby-on-rails sprockets


    【解决方案1】:

    这里最大的误解是我认为我应该指向一个已消化的资产,忘记了这些资产是为了提供服务而不是作为文件读取的。因此,该文件可以完美地从资产映射中加载。我解决了上述问题如下:

    module MailHelper
      def mail_image_tag(image, **options)
        path = Rails.root.join('app', 'assets', 'images', image)
    
        attachments.inline[image] = File.read(path)
        image_tag attachments[image].url, **options
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 2017-08-27
      • 2010-10-12
      • 2011-10-03
      • 2013-11-14
      相关资源
      最近更新 更多