获取rails控制器中的环境设置

Ani*_*l D 7 ruby-on-rails

我在development.rb中有一些电子邮件设置,我想在我的控制器中访问它.

设置development.rb是:

config.notify_submited_transaction = 'anil@swiftsetup.com,anildbest83@gmail.com'
config.notify_approved_transaction = 'anil@swiftsetup.com'
Run Code Online (Sandbox Code Playgroud)

在我的控制器/动作中,我正在尝试这个:

  @to = Rails.env.notify_submited_transaction
  @subject = 'AM - Vendor Submitted Transaction'
  AmMailer.vendor_submited_transaction(@to, @subject, current_user).deliver
Run Code Online (Sandbox Code Playgroud)

这虽然导致错误:

  undefined method `notify_submited_transaction'
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得我设置的配置值.

谢谢你的帮助.

Ern*_*est 18

只是一个旁注:Rails.env是一个特殊的字符串对象,它允许你获得当前的环境(它不像Rack的env):

puts Rails.env # => "production"
puts Rails.env.test? # => false
Run Code Online (Sandbox Code Playgroud)

这并不意味着返回配置设置.

当您想要自定义设置时,这可能会派上用场/config/initializers/*,为清楚起见,在某些情况下这是更好的方法(建议不要使用自定义设置来混乱rails环境文件).例如:

# config/initializers/mailer_settings.rb
if Rails.env.production?
  ActionMailer::Base.smtp_settings = {
    :address              => "smtp.gmail.com",
    ...
  }
else
  #different settings
end
Run Code Online (Sandbox Code Playgroud)


Vik*_*Vik 5

尝试访问:

Rails.application.config.notify_submited_transaction
Rails.application.config.notify_approved_transaction
Run Code Online (Sandbox Code Playgroud)

似乎类似于:对于 Rails,如何访问或打印配置变量(作为实验或测试/调试)