首页 > 解决方案 > 将“配置变量”作为静态值的替代方法

问题描述

我正在寻找一些静态的全局值,例如,如果某个值为 nil|null 则放置此默认值,例如,如果未在分配中声明,则将默认 url 放入 eex 的链接中。

例子:

# Create a link with default return if URL not found
 <%= 
     link "Go back",
         to: assigns[:url_back] || Application.get_env(:app_name, :default_values)[:url_back]
 %>

# example of in ./config/config.exs
config :app_name, :default_values,
    url_back: "/index"
defmodule StaticValues do
   def url_back(), do: "/index"
end
# note: I do not know how to import or use in eex...

标签: elixirphoenix-framework

解决方案


虽然布雷特的答案是完全正确的,但如果你想更干,可能还有另一种方法。

Map.merge/2在渲染模板之前简单地弱化默认值。

assigns =
  :app_name
  |> Application.get_env(:default_values)
  |> Map.new()
  |> Map.merge(assigns)

推荐阅读