2015-10-05 15 views
5

Phoenix'i öğrenmeye çalışıyorum ve bir soruyla karşılaştım. Raylarda bir .erb dosyasında görüntülenen mevcut ray versiyonunu elde etmek için.eex dosyasından işlevler nasıl çağırılır

. Phoenix'te bunun nasıl yapılacağı konusunda sordu ve ben Phoenix ile rampa çalışırken

:application.get_key(:phoenix, :vsn) 

Maalesef bu benim cehalet vurgular cevap aldım. Benim .eex dosyasında

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

koyduğunuzda, ben
no function clause matching in Phoenix.HTML.Safe.Tuple.to_iodata/1 

beni sonraki denemek için ne olduğunu öğrenmek için yardımcı herhangi dokümanlar bana gelin lütfen olsun. Teşekkür ederim!

cevap

8

:application.get_env arama biçiminde bir demet verir:

{:ok, '1.0.0'} 

Phoenix.HTML.Safe bu biçimde (source) ve başlığın deşifre etmek üzere bir fonksiyonu yoktur. Sonra bu VersionHelper.version ile görünümünde çağrılabilir

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 

- Bu: bir yardımcı işlevi kullanmak olacaktır

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

Ancak daha iyi bir yolu: Sen çağrısından versiyonunu ayıklamak gerekir versiyonun getirilmesinin, anka kuşunun görünümde kullandığı anahtara bağlı olmadığı anlamına gelir.

+0

Teşekkür ederiz! Yardımın için minnettarım. –