gpt4 book ai didi

ruby-on-rails - Ruby 实例变量在方法内部不可用

转载 作者:太空宇宙 更新时间:2023-11-03 17:35:21 25 4
gpt4 key购买 nike

我不明白为什么无法从各个邮件程序方法中访问实例变量 @delivery_options...

class UserMailer < ActionMailer::Base

@delivery_options = {
user_name: 'foo',
password: 'bar',
address: 'smtp.foobar.net'
}

def invite_email (email, project)
logger.debug( @delivery_options ) #WHY IS THIS IS UNDEFINED??
@project = project

#THIS WORKS FINE
mail(to: email, subject: "WORK DAMMIT", delivery_method_options: {
user_name: 'foo',
password: 'bar',
address: 'smtp.foobar.net'
})

#THIS FAILS
#mail(to: email, subject: "WORK DAMMIT", delivery_method_options: @delivery_options)

end


end

最佳答案

如果这些是“静态”数据,您可以这样做:

class UserMailer < ActionMailer::Base

DELIVERY_OPTIONS = {
user_name: 'foo',
password: 'bar',
address: 'smtp.foobar.net'
}

def invite_email(email, project)
mail(to: email, subject: "WORK DAMMIT", delivery_method_options: DELIVERY_OPTIONS)
...
end
end

这应该有效。

如果你想使用一个实例变量,你应该这样做:

class UserMailer < ActionMailer::Base

def initialize
@delivery_options = {
user_name: 'foo',
password: 'bar',
address: 'smtp.foobar.net'
}
end

def invite_email(email, project)
mail(to: email, subject: "WORK DAMMIT", delivery_method_options: @delivery_options)
...
end
end

这样,变量就在您使用的 UserMailer 实例上定义了。您的做法是在 UserMail 类上定义一个实例变量。

关于ruby-on-rails - Ruby 实例变量在方法内部不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18900344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com