我正在使用Apartment Gem构建一个Rails 4应用程序,我仍然坚持如何继续定义我的邮件主机..这是一个教程系列的一部分,在几集之后才停止..
现在最大的问题是这一切都在开发模式下运行,但是当我推送到Heroku,创建一个帐户时,会发送确认电子邮件,但是当我去确认时,确认会将我重定向回我的localhost( lvh.me:3000)并且生产应用程序没有得到确认更新。
我的应用程序控制器中有以下内容:
def set_mailer_host
subdomain = current_account ? "#{current_account.subdomain}." : ""
ActionMailer::Base.default_url_options[:host] = "#{subdomain}lvh.me:3000"
end
我想添加一个if else
语句,如下所示:
def set_mailer_host
if environment == development
subdomain = current_account ? "#{current_account.subdomain}." : ""
ActionMailer::Base.default_url_options[:host] = "#{subdomain}lvh.me:3000"
else
subdomain = current_account ? "#{current_account.subdomain}"
ActionMailer::Base.default_url_options[:host] = "#{subdomain}patrolvault.co"
end
我只是想弄明白,或者我是否应该采取另一种方法来解决这个问题?
答案 0 :(得分:6)
您可以根据Rails环境放置条件:
Rails.env.production?
Rails.env.development?
Rails.env.test?
所以在你的代码中,
def set_mailer_host
if Rails.env.development?
subdomain = current_account ? "#{current_account.subdomain}." : ""
ActionMailer::Base.default_url_options[:host] = "#{subdomain}lvh.me:3000"
else
subdomain = current_account ? "#{current_account.subdomain}"
ActionMailer::Base.default_url_options[:host] = "#{subdomain}patrolvault.co"
end
end
哦是的,看起来你在end
区块中忘记了if-else
答案 1 :(得分:3)
您可以使用Ren的帖子中描述的Date x1 x2 x3 x4
7/31/16 1.03 0.98 1.01 1.03
8/31/16 1.01 0.95 1.03 1.01
9/30/16 0.97 1.02 0.94 0.98
10/31/16 0.99 0.98 1.01 1.04
方法,但每个环境的imho配置文件都是一个更好的地方。
查看官方指南的Configuring Rails Applications部分。您可以通过将相关代码放入Rails.env.production?
文件,为每个环境使用不同的配置。例如,如果要在生产环境中为默认URL选项设置主机,可以将以下代码放在config/environments/[environment name].rb
文件的末尾(就在最新的config/environments/production.rb
语句之前):
end
请注意,此代码段包含另一种方法。您可以将域放入环境变量中,并在常规配置文件中使用相同的代码。这甚至更好,因为您将没有任何硬编码值和重复代码。