打印\ n作为终端中的实际换行符

时间:2016-03-25 08:41:11

标签: ruby-on-rails ruby rspec

在我的RSpec电子邮件测试中,我使用换行符渲染一些文本视图:

class MyMailer < ActionMailer::Base
  def email1
    @foo = "Hello"
    @bar = "World"
    mail(to: "test@example.com", subject: "Foobar")
  end
end

这是视图email1.text.erb

<%= @foo %>

<%= @bar %>

这是我的考验:

it 'renders output' do
  body = MyMailer.email1.body
  puts body
end

当我在终端中打印电子邮件正文时,ruby返回\n而不是实际的换行符:

Hello\n\nWorld
  

出于调试目的,最好在终端上打印实际的换行符而不是\n。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

您的编码似乎有些不对劲。由于这仅用于调试目的,您可以使用以下命令修复它:

puts body.to_s.gsub('\n', "\n")

(注意引号之间的区别!)。要以正确的方式修复它,您需要告诉您的身体编码是什么,因为它用于将原始邮件正文转换为ruby字符串。

答案 1 :(得分:0)

我建议在email1.text.erb

中执行此操作
<%= @foo + '\n' + @bar %>

答案 2 :(得分:-1)

你必须逃避角色。使用\\n