Roadie + Devise,无法设置 Devise 电子邮件的样式
Roadie + Devise, can't style Devise emails
Rails 4.1.9,Ruby 2.2,Roadie 3.0.3,roadie-rails 1.0.4,设计 3.4.1,SASS
我有一个共享布局,用于设计邮件程序和非设计邮件程序。对于非设计邮件程序,我明确设置了 roadie gem。例如:
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,但在我的设计视图中没有。但是,即使 mailers/shared css 文件被应用于自定义邮件程序,它也不适用于设计邮件程序。
在我的 application.rb:
config.to_prepare do
Devise::Mailer.layout 'emails'
end
我还设置了 mailer_previews,虽然样式应用于 custom_mailer 的两个样式表,但没有样式应用于我的设计邮件程序视图。
我确实重启了我的服务器。我尝试按照说明 here 进行操作。但我想我在某处遗漏了一些东西。是否有一些额外的选项我需要添加到设计控制器或做一些猴子修补才能让它工作?有什么想法吗?
P.S。我想用 roadie
标记它,但我没有足够的声誉。随意添加它。谢谢!
我最终写了一个初始化器来给 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
当不需要 roadie_options 时,可能是这种情况:
config.to_prepare do
Devise::Mailer.layout 'mailer'
Devise::Mailer.send(:include, Roadie::Rails::Automatic)
end
Rails 4.1.9,Ruby 2.2,Roadie 3.0.3,roadie-rails 1.0.4,设计 3.4.1,SASS
我有一个共享布局,用于设计邮件程序和非设计邮件程序。对于非设计邮件程序,我明确设置了 roadie gem。例如:
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,但在我的设计视图中没有。但是,即使 mailers/shared css 文件被应用于自定义邮件程序,它也不适用于设计邮件程序。
在我的 application.rb:
config.to_prepare do
Devise::Mailer.layout 'emails'
end
我还设置了 mailer_previews,虽然样式应用于 custom_mailer 的两个样式表,但没有样式应用于我的设计邮件程序视图。
我确实重启了我的服务器。我尝试按照说明 here 进行操作。但我想我在某处遗漏了一些东西。是否有一些额外的选项我需要添加到设计控制器或做一些猴子修补才能让它工作?有什么想法吗?
P.S。我想用 roadie
标记它,但我没有足够的声誉。随意添加它。谢谢!
我最终写了一个初始化器来给 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
当不需要 roadie_options 时,可能是这种情况:
config.to_prepare do
Devise::Mailer.layout 'mailer'
Devise::Mailer.send(:include, Roadie::Rails::Automatic)
end