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

Nic*_*ick 11 ruby interpolation ruby-on-rails

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

我试过"\",但没有运气.虽然它逃脱了#{},它还包括"\":

>> <<-END
 #{RAILS_ENV} \#{RAILS_ENV} 
END
=> " development \#{RAILS_ENV}\n"
Run Code Online (Sandbox Code Playgroud)

aus*_*ton 19

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

item = <<-'END'
  #{code} stuff
  whatever i want to say #{here}
END
Run Code Online (Sandbox Code Playgroud)


Mik*_*use 18

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

>> a,b = 1,2        #=> [1, 2]
>> s = "#{a} \#{b}" #=> "1 \#{b}"
>> puts s           #=> 1 #{b}
>> s.size           #=> 6
Run Code Online (Sandbox Code Playgroud)

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