嗨是否可以从控制器读取设置yml?我使用rails 4.2.0
我想在settings.yml中存储一些全局信息,以显示视图中的那些信息
此刻我尝试这样:
settingsfile = File.read(Rails.root + "./config/settings.yml")
settingsfile = YAML.load(settingsfile)
settingsfile["default"]
有效,但当我想要更深入时
settingsfile["default"]["info"]
空
Yml文件
default:
supported_languages:
de: Deutsch
fr: Francais
en: English
it: Italiano
sv: Svenska
pt: Português
nl: Nederlands
es: Español
production:
info:
version: 2.0.0
datum: 11.05.2015
答案 0 :(得分:3)
不使用gem ..你可以使用像..
这样的东西您的dev / config / email.yml
development:
:address: smtp.service.com
:port: 25
:user_name: mike@gmail.com
:password: mikepassword
production:
:address: smtp.gmail.com
:port: 587
:authentication: plain
:user_name: mike@gmail.com
:password: mikepassword
:enable_starttls_auto: true
您可以加载此yml文件,就像....
email_settings = YAML::load(File.open("#{Rails.root.to_s}/config/email.yml"))
ActionMailer::Base.smtp_settings = email_settings[Rails.env] unless email_settings[Rails.env].nil?
答案 1 :(得分:1)
看看宝石rails_config。
答案 2 :(得分:1)
您可以尝试使用BetterSettings或settingslogic之类的解决方案,该解决方案提供了一种将YML文件加载到设置对象中的简单方法。
两个库都可以使用方法调用轻松访问设置:
class Settings < BetterSettings
source Rails.root.join('config/settings.yml'), namespace: :default
end
这将允许您访问以下设置:
Settings.info.version # '2.0.0'
Settings.supported_languages.es # 'Español'
在此示例中,我们使用:default
作为名称空间,但您也可以使用Rails.env
将设置的范围限定在特定环境中。
答案 3 :(得分:0)
您可以尝试:
@settingsvariable = Settings.default.supported_languages.de
这种方法适用于我的应用程序。