【发布时间】:2012-01-25 08:37:29
【问题描述】:
您好,我有类似以下内容:
class TrialRequest
attr_accessor :trial_email
def initialize(email)
@trial_email = email
puts "Trial_email: #{trial_email}"
end
def create
@email = ::Gmail.connect!(gmail_name, gmail_password) do |gmail|
email = gmail.compose do
to 'trial@domain.com'
from trial_email
subject trial_email
text_part do
content_type 'text/html; charset=UTF-8'
body 'Sign me up.'
end
end
#binding.pry
gmail.deliver!(email)
end
end
end
问题是compose块内部trial_email没有定义:
NameError: undefined local variable or method `trial_email' for #<Mail::Message:0x0000000431b830>
这是 Ruby 1.9 问题还是 gmail gem 问题?
我应该如何让这个方法“可见”/在 compose 块的范围内?
更新: 这是 gmail gem 的一个问题/功能 - ruby 1.9 块已经改变,但没有这么多! 除了接受的答案之外,另一种解决方法是将数据作为方法参数传递:
def create(trial_email)
...
end
【问题讨论】:
标签: ruby block ruby-1.9.2