如何从字符串插值中转义#{

我有一个heredoc,我使用#{}来插入一些其他字符串,但是有一个实例,我也想在我的heredoc中编写实际的文本#{some_ruby_stuff} ,而不进行插值。 有没有办法逃脱#{。

我试过“\”,但没有运气。 虽然它逃脱#{} ,但它也包含“\”:

 >> < " development \#{RAILS_ENV}\n" 

我认为反斜杠哈希只是Ruby在一些irb-only方式中有用。

 >> a,b = 1,2 #=> [1, 2] >> s = "#{a} \#{b}" #=> "1 \#{b}" >> puts s #=> 1 #{b} >> s.size #=> 6 

所以我认为你已经有了正确的答案。

对于heredoc而不必手动转义所有可能的插值,您可以使用单引号样式的heredoc。 它的工作原理如下:

 item = <<-'END' #{code} stuff whatever i want to say #{here} END 

您可以使用'引号代替。 其中包含的任何内容都不会被插值。

逃避#解决方案也适用于我。 事实上Ruby解释器显示

 => "\#{anything}" 

 > puts "\#{anything}" #{anything} => nil 

您的字符串包含您想要的内容,只有p方法使用转义字符显示它。 实际上, p方法向您展示了如何编写字符串以获得由其参数表示的完全对象。