Rails 4.1.9,Ruby 2.2,Roadie 3.0.3,roadie-rails 1.0.4,设计3.4.1,SASS
我有一个共享布局,我用于设计邮件程序和非设计邮件程序。对于非设计邮件程序,我明确设置了roadie gem。 E.g:
class ReportMailer < ActionMailer::Base
include Roadie::Rails::Automatic
def send_report_email
...
mail(to: @user.email, subject: subject) do |format|
format.html { render layout: 'emails' }
end
end
...
private
def roadie_options
super unless Rails.env.test?
end
end
这是布局的主管:
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
<meta name="viewport" content="width=device-width, initial scale=1.0">
<%= stylesheet_link_tag('mailers/shared') %>
<%= stylesheet_link_tag(yield :stylesheet_path) %>
</head>
对于我的自定义邮件程序,我提供了stylesheet_path,但不在我的设计视图中。但是,即使邮件程序/共享css文件已应用于自定义邮件程序,也不适用于设计邮件程序。
在我的application.rb中:
config.to_prepare do
Devise::Mailer.layout 'emails'
end
我还设置了mailer_previews,虽然样式应用于custom_mailer的两个样式表,但没有样式应用于我的设计邮件程序视图。
我确实重启了我的服务器。我尝试按照here的说明操作。但我认为我在某处遗漏了某些东西。是否有一些额外的选项需要添加到设计控制器或做一些猴子修补以使其工作?有什么想法吗?
P.S。我想用roadie
标记这个,但我没有足够的声誉。随意添加它。谢谢!
答案 0 :(得分:4)
我最终写了一个初始化程序,猴子补丁Devise。您可以使用以下代码将devise_mailer_overrides.rb
添加到config/initializers
中,它似乎有效:
Devise::Mailer.class_eval do
self.asset_host = nil
include Roadie::Rails::Automatic
private
def roadie_options
super unless Rails.env.test?
end
end
答案 1 :(得分:1)
当不需要roadie_options时,可能就是这种情况:
config.to_prepare do
Devise::Mailer.layout 'mailer'
Devise::Mailer.send(:include, Roadie::Rails::Automatic)
end