2015-10-05 62 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

謝謝!我感謝您的幫助。 –