我试图学习凤凰城,然后遇到了一个问题。在Rails中,我可以说
<%= Rails.version %>
获取当前rails版本显示在.erb文件中。我在凤凰城询问了如何做到这一点,并得到了答案
:application.get_key(:phoenix, :vsn)
不幸的是,当我试图与凤凰城合作时,这突显了我的无知。当我把
<%= :application.get_key(:phoenix, :vsn) %>
在我的.eex文件中,我得到了
no function clause matching in Phoenix.HTML.Safe.Tuple.to_iodata/1
请指出任何帮助我了解接下来要做什么的文档。谢谢!
答案 0 :(得分:8)
: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
然后可以在VersionHelper.version
的视图中调用它 - 这意味着您获取的版本与phoenix在视图中使用的键无关。