2016-04-01 23 views
0

bu iç "web/şablonlar/modül/headerHC.html.eex" bulunmaktadır: Sonrabir şablonda doğru bir argüman iletilmesi edilemiyor

<%= for element <- MyProject.PageView.Recursion.buildElements(@header_linkNumber),1) do %> 
      <%= element %> 
    <% end %> 

, ben web/düzen/HC" Bu bileşeni kullanmak .html.eex ":

<%= render FabricaASA.ModuleView, "headerHC.html", conn: @conn, 
    header_class: nil, 
    header_linkNumber: "3" 
%> 

Nihayet içimde tanımladığınız "web/görüntüleme/page_view.ex":

defmodule Recursion do 
     def buildElements(n) when n <= 1 do 
      [n] 
     end 
     def buildElements(n) do 
      [n | buildElements(n - 1)] 
     end 
    end 

sorun bu hatayı alıyorum olmasıdır: Bu hat işaret

bad argument in arithmetic expression: yerine <%= for element <- MyProject.PageView.Recursion.buildElements(2),1) do %>

gibi bir dizi @header_linkNumber eklediğinizde

def buildElements(n) when n <= 1 do 

bu olur zaten yerine @MyProject.ModuleView.header_linkNumber kullanmayı denedim ama sonra bu hatayı alıyorum:

cannot set attribute @__aliases__ inside function/macro 
+0

Eğer buildElements için argüman olarak header_linkNumber kullanıyor musunuz? Eğer öyleyse, '3' ve '3' ' – Gazler

+0

Doğru değil! Orada dizeyi özledim ... Teşekkürler Gaziler (lütfen cevap verin, lütfen). –

cevap

1

"Aritmetik ifadede kötü argüman" olarak alıyorsunuz Bir dizeden bir tamsayı çıkarılarak gibidir:

iex> "3" - 1 
** (ArithmeticError) bad argument in arithmetic expression 
    :erlang.-("3", 1) 

Değişimi:

header_linkNumber: "3" 

için:

header_linkNumber: 2 

ilginç bir yan not olarak, aslında tamsayılar için dizeleri karşılaştırabilirsiniz:

iex> "3" <= 1 
false 

You Bunun dışında bir yerde tamsayılar yerine dizeleri kullanıyorsanız, beklenmedik hatalara neden olabileceğinden haberdar olmalısınız. (http://elixir-lang.org/getting-started/basic-operators.html itibaren)

sırası:

number < atom < reference < functions < port < pid < tuple < maps < list < bitstring

+0

Harika not! Bu okuduğumuz bir şey ama unutmaya eğilimliyiz ... –

İlgili konular