当前位置:  开发笔记 > 后端 > 正文

将变量传递给块 - Rails

如何解决《将变量传递给块-Rails》经验,为你挑选了1个好方法。

在我的rails应用程序中,我使用此gem与Gmail API进行交互:https://github.com/gmailgem/gmail

以下是我发送电子邮件的方法:

gmail = Gmail.connect(params[:email], params[:password])
@email = params[:email]

email = gmail.compose do
  to @email
  subject "Having fun in Puerto Rico!"
  body "Spent the day on the road..."
end
email.deliver!

我收到此错误:

An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address.

电子邮件变量无法传递到块中.是什么造成的?如何传递动态电子邮件地址?



1> Meredian..:

我确定它发生是因为@email是一个实例变量,绑定到self(有点等于self.email).并且gmail模块可以self使用像instance_eval或者class_eval所谓的"范围门"之类的方法轻松更改内部块.这是红宝石元编程的常规功能.

只需使用一个简单的变量,它就会被延续捕获.

email_to = params[:email]
email = gmail.compose do
    to email_to
    ...
end

我强烈建议不要将实例变量用作temp - 它们代表对象的状态.使用局部变量,这就是它们的设计目标.


`params`不是变量,它是一个基本控制器的方法(`ActionController`?),所以它也绑定到`self`并且在块内无法访问.
嗯,奇怪,那运气不好.但是,在块内部检查`self.class`和`self.inspect`.
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有