You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slim模板中\n无法实现换行的问题求助

解决Slim模板邮件中换行无效的问题

问题原因

Rails Action Mailer默认发送HTML格式邮件,在HTML渲染规则里,文本中的换行符\n会被解析为空格而非实际换行;同时Slim模板用=输出内容时会自动转义HTML,直接输出\n无法触发换行效果。

解决方案

方案1:将换行符替换为HTML换行标签<br>

修改test.slim,把文本里的\n替换成HTML的<br>标签,同时确保不转义HTML内容:

== @summaries.map { |summary| summary.gsub("\n", "<br>") }.join("<br>")

或者使用raw方法强制不转义:

= raw @summaries.map { |summary| summary.gsub("\n", "<br>") }.join("<br>")

方案2:切换为纯文本格式邮件

如果不需要HTML格式的邮件,直接在邮件方法中指定content_type为text/plain,这样\n就能正常生效:
修改clients_mailer.rb:

class ClientsMailer < ApplicationMailer
  def test(summaries)
    @summaries = summaries

    mail(
      to: "test@test.com",
      subject: "test",
      content_type: "text/plain"
    )
  end
end

此时原Slim模板的写法无需修改,纯文本环境下\n会被解析为换行。

方案3:用Slim遍历逐行输出

通过拆分文本逐行输出,配合<br>实现换行,可读性更强:

- @summaries.each do |summary|
  - summary.split("\n").each do |line|
    = line
    br

内容的提问来源于stack exchange,提问作者HeppokoNeet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:52:09