通过电子邮件Ruby on Rails发送“carrierwave”gem附件

时间:2013-10-07 10:16:27

标签: ruby-on-rails carrierwave image-uploading mercury-editor

我正在使用Carrierwave gem + Mercury Editor,我希望允许用户创建邮件活动并发送它们。一切都运作良好,但我有内嵌图像的问题。

在image_uploader.rb我有

def store_dir
  "#{uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

我有newsletters.contents专栏,它包含来自Mercury的预先格式化的HTML,包括图片。

因此,在电子邮件.eml文件中,我的路径如<img src="uploads/...">而不是<img src="http://uploads/...">如果我将路径更改为#{Rails.root}/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}上传根本无法正常工作。

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我通过在mercury_update控制器操作中添加gsub来解决它

def mercury_update
    newsletter = Newsletter.find(params[:id])
    newsletter.title = params[:content][:newsletter_title][:value]
    newsletter.content = params[:content][:newsletter_content][:value]
    newsletter.update_attributes(content: newsletter.content.sub!('<img src="/uploads/', '<img src="http://host.com/uploads/'))
    newsletter.save!
    render text: ""
end

但我觉得这是难看的解决方案