我正在尝试学习 Phoenix,但遇到了一个问题。在 Rails 中,我可以说
<%= Rails.version %>
获取显示在 .erb 文件中的当前 rails 版本。我问了如何在 Phoenix 做到这一点,得到了答案
:application.get_key(:phoenix, :vsn)
不幸的是,这突显了我在尝试使用 Phoenix 时的无知。当我放
<%= :application.get_key(:phoenix, :vsn) %>
在我的 .eex 文件中,我得到
no function clause matching in Phoenix.HTML.Safe.Tuple.to_iodata/1
请向我指出任何有助于我了解下一步尝试的文档。谢谢!
最佳答案
:application.get_env
调用以以下格式返回一个元组:
{:ok, '1.0.0'}
Phoenix.HTML.Safe 没有解码这种格式的元组的功能 ( source )。
您需要从调用中提取版本:
<%= :application.get_key(:phoenix, :vsn) |> elem(1) %>
然而,更好的方法是使用辅助函数:
defmodule VersionHelper do
def version do
case :application.get_key(:phoenix, :vsn) do
{:ok, vsn} -> vsn
_ -> #raise or return null or something else
end
end
end
然后可以在您的 View 中使用
VersionHelper.version
调用它- 这意味着您对版本的获取与 phoenix 在 View 中使用的 key 无关。
关于tags - 如何从 .eex 文件调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32957668/