无法在Phoenix控制器和/或模板中获取配置值

Tay*_*ler 13 elixir phoenix-framework

我正在尝试从控制器中的Phoenix配置文件中获取值.

# config.exs

use Mix.Config

config :app_name, AppName.Endpoint,
  url: [host: "localhost"],
  debug_errors: false,
  root: Path.expand("..", __DIR__)
Run Code Online (Sandbox Code Playgroud)

Application.get_env(:app_name, :url)例如,似乎什么也没有回报.

我错过了什么吗?

wha*_*ide 19

正如您Mix.Config模块文档中看到的,有两种变体config:config/2config/3.config/3当你传递三个参数时,你正在使用变体:

  • :app_name
  • AppName.Endpoint
  • 关键字列表([url: ..., debug_errors: ...])

这意味着您在应用程序AppName.Endpoint的环境中配置密钥:app_name,并将其值设置为关键字列表(记住AppName.Endpoint只是一个原子,因此可以将其用作密钥).要检索网址,您需要执行以下操作:

Application.get_env(:app_name, AppName.Endpoint)[:url]
Run Code Online (Sandbox Code Playgroud)

为了完整起见,config/2允许在应用程序的env中设置多个键值对.事实上,它的参数是应用程序名称和键值对列表.