我想在my/config/config.exs
文件中设置我的应用标题:
config :my, My.Endpoint,
url: [host: "localhost"],
root: Path.dirname(__DIR__),
secret_key_base: "secret",
title: "My App"
如何在以后阅读title
才能在模板中使用它?类似的东西:
<div>
Title of my app is <%= ??? %>
</div>
我试过了conn.title
,它说没有这样的钥匙。但是,当我尝试conn.secret_key_base
它有效。为什么呢?
答案 0 :(得分:55)
get_env函数是Elixir / Erlang核心的Application模块的一部分。
此函数返回应用程序环境中特定键的值。
考虑到您的配置,您将以这种方式访问title
属性:
Application.get_env(:my, My.Endpoint)[:title]
第三个参数用于在配置密钥不存在时传递默认值。
答案 1 :(得分:27)
您可以使用typeText()
答案 2 :(得分:5)
让我们在dev.ex文件中说你有一个配置变量
config :app_name, AppName.Endpoint,
api_prefix: "api/v2",
api_host: "http://0.0.0.0",
api_port: "3000"
您可以获取所有三个配置变量
Application.get_env(:app_name, AppName.Endpoint)[:api_prefix]
Application.get_env(:app_name, AppName.Endpoint)[:api_host]
Application.get_env(:app_name, AppName.Endpoint)[:api_port]
答案 3 :(得分:4)
要明确区分我使用的凤凰和其他模块的自定义配置和配置:
config :ace, :config,
root: Path.dirname(__DIR__),
title: "Ace"
然后使用get_env调用检索值,如:
iex> Application.get_env(:ace, :config)[:title]
"Ace"
答案 4 :(得分:1)
如果你深入了解配置只是一个将配置值添加到关键字列表的功能,以后您可以在应用中访问它们
config/2
获取密钥并将其映射到keyword_list,
config/3
获取密钥并使用keyword_list作为值添加密钥。
由于您使用的是config/3
,因此它会在My.Endpoint下命名您的配置,这将有效Application.get_env(:my, My.Endpoint, :title)