Ruby 使用 Mandrill 时引用语法
Ruby Quotes Syntax when using Mandrill
我在 Rails 应用程序上有一个 Ruby,我正在编写我的邮件程序以将 SMTP headers 发送到 Mandrill。
我想我在将变量放入字符串时遇到了问题:
class MyMailer < Devise::Mailer
helper :application # gives access to all helpers defined within `application_helper`.
include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url`
def confirmation_instructions(record, token, opts={})
headers['X-MC-MergeVars'] = '{"ctoken1": "Drip Email"}'
temp_var = "Hello Everyone"
headers['X-MC-MergeVars'] = '{"tag_test_1": "yoyoyo"}' # 1
# headers['X-MC-MergeVars'] = "{'tag_test_1': 'yoyoyo'}" # 2
# headers['X-MC-MergeVars'] = "{'tag_test_1': #{temp_var}}" # 3
# headers['X-MC-MergeVars'] = '{"tag_test_1": #{temp_var}}' # 4
headers['X-MC-MergeVars'] = '{"ctoken3": "Test at the End"}'
super
end
end
我想将 "temp_var" 变量放入 header。你可以看到我的4次尝试。
首先 - 完整性检查 - #1 中的语法工作正常 - 我的 mandrill 电子邮件中的变量 "tag_test_1" 被替换为 "yoyoyo" 但当然这没有使用 ruby变量。
None 我的尝试 2,3 或 4 成功了。我的 Mandrill 电子邮件收到 TAG_TEST_1 而不是变量替换 ("Hello Everyone")。
最终我要做的是通过 Mandrill 将帐户激活 link 发送到电子邮件中。所以我想我需要发送 'token' 变量,但现在我似乎无法获得一个已知变量 (temp_var) 来传递给电子邮件。
我怀疑我没有正确理解 Ruby 字符串语法。
感谢任何帮助!
我会试试这个:
headers['X-MC-MergeVars'] = "{\"tag_test_1\": \"#{temp_var}\"}"
或者这样:
headers['X-MC-MergeVars'] = %Q'{"tag_test_1": "#{temp_var}"}'
首先,请务必注意不能在单引号内使用#{} 语法。您只能在双引号内使用它。另请注意,当您使用新的散列语法 {'': ''}
时,它会将字符串转换为符号。上面的答案应该有效。
我在 Rails 应用程序上有一个 Ruby,我正在编写我的邮件程序以将 SMTP headers 发送到 Mandrill。 我想我在将变量放入字符串时遇到了问题:
class MyMailer < Devise::Mailer
helper :application # gives access to all helpers defined within `application_helper`.
include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url`
def confirmation_instructions(record, token, opts={})
headers['X-MC-MergeVars'] = '{"ctoken1": "Drip Email"}'
temp_var = "Hello Everyone"
headers['X-MC-MergeVars'] = '{"tag_test_1": "yoyoyo"}' # 1
# headers['X-MC-MergeVars'] = "{'tag_test_1': 'yoyoyo'}" # 2
# headers['X-MC-MergeVars'] = "{'tag_test_1': #{temp_var}}" # 3
# headers['X-MC-MergeVars'] = '{"tag_test_1": #{temp_var}}' # 4
headers['X-MC-MergeVars'] = '{"ctoken3": "Test at the End"}'
super
end
end
我想将 "temp_var" 变量放入 header。你可以看到我的4次尝试。
首先 - 完整性检查 - #1 中的语法工作正常 - 我的 mandrill 电子邮件中的变量 "tag_test_1" 被替换为 "yoyoyo" 但当然这没有使用 ruby变量。
None 我的尝试 2,3 或 4 成功了。我的 Mandrill 电子邮件收到 TAG_TEST_1 而不是变量替换 ("Hello Everyone")。
最终我要做的是通过 Mandrill 将帐户激活 link 发送到电子邮件中。所以我想我需要发送 'token' 变量,但现在我似乎无法获得一个已知变量 (temp_var) 来传递给电子邮件。
我怀疑我没有正确理解 Ruby 字符串语法。
感谢任何帮助!
我会试试这个:
headers['X-MC-MergeVars'] = "{\"tag_test_1\": \"#{temp_var}\"}"
或者这样:
headers['X-MC-MergeVars'] = %Q'{"tag_test_1": "#{temp_var}"}'
首先,请务必注意不能在单引号内使用#{} 语法。您只能在双引号内使用它。另请注意,当您使用新的散列语法 {'': ''}
时,它会将字符串转换为符号。上面的答案应该有效。