2015-10-05 67 views
5

我在学习Phoenix,并遇到了一个问题。在Rails中,我可以说如何从.eex文件调用函数

<%= Rails.version %> 

以获取显示在.erb文件中的当前rails版本。我问了一下如何做到这一点在凤凰城,并得到了答案

:application.get_key(:phoenix, :vsn) 

不幸的是,这突显我的无知,我尝试用凤凰的增产行动。当我把

<%= :application.get_key(:phoenix, :vsn) %> 

在我.eex文件,我得到

no function clause matching in Phoenix.HTML.Safe.Tuple.to_iodata/1 

请点我,帮助我学习到尝试下什么的任何文档。谢谢!

回答

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在视图中使用的密钥绑定。

+0

谢谢!我感谢您的帮助。 –