单引号字符串字符串插值

时间:2015-04-23 15:46:30

标签: ruby-on-rails ruby actionmailer string-interpolation

我正在尝试使用Rails在ActionMailer中设置电子邮件地址。在硬编码之前,我们现在想让它们成为ENV变量,这样我们就不需要在每次电子邮件更改时修改代码。

以下是目前定义的方式:

from = '"Name of Person" <email@email.com>'

我尝试使用ENV['EMAIL']将电子邮件设置为环境变量,但即使使用#{ENV['EMAIL'},我也没有运气。

有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:8)

你不能在Ruby中使用单引号字符串进行字符串插值。

但双引号字符串可以!

from = "'Name of Person' <#{ENV['EMAIL']}>"

但是如果你想让你的双引号包裹Name of Person,你可以用反斜杠\来转义它们:

from = "\"Name of Person\" <#{ENV['EMAIL']}>"

或者使用字符串连接:

from = '"Name of Person" <' + ENV['EMAIL'] + '>'
# but I find it ugly

答案 1 :(得分:6)

如果要在插值字符串中嵌入双引号,可以使用%表示法分隔符(Ruby从Perl中删除),例如。

  var image = document.getElementById('img1');
            console.log("imageData: " + path);
            image.src = path; 

from = %|"Name of Person", <#{ENV['EMAIL']}>|

只需在字符串中已经存在的from = %("Name of Person", <#{ENV['EMAIL']}>) 后选择分隔符。

答案 2 :(得分:2)

您也可以使用format。我没有看到它像在其他语言(例如C,Python)中一样在Ruby中使用,但它也可以正常工作:

from = format('"Name of Person", <%s>', ENV["EMAIL"])

使用%运算符的替代语法:

from = '"Name of Person", <%s>' % ENV["EMAIL"]

以下是format(又名sprintf)的文档:

http://ruby-doc.org/core-2.2.0/Kernel.html#method-i-format