2016-04-01 3 views
0

I dieses Innen korrekt ein Argument übergeben "web/templates/Modul/headerHC.html.eex":kann nicht in einem Template habe

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

Dann verwende ich diese Komponente in „web/layout/HC .html.eex ":

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

Endlich habe ich definiert inside "Web/views/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 

Das Problem ist, dass ich diesen Fehler bin immer:

bad argument in arithmetic expression zu dieser Linie zeigt:

def buildElements(n) when n <= 1 do 

Dies geschieht, wenn ich @header_linkNumber statt einer Nummer wie <%= for element <- MyProject.PageView.Recursion.buildElements(2),1) do %>

einfügen habe ich versucht, bereits @MyProject.ModuleView.header_linkNumber stattdessen zu verwenden, aber dann bekomme ich diesen Fehler:

cannot set attribute @__aliases__ inside function/macro 
+0

Sie header_linkNumber als Argument für buildElements verwenden Sie? Wenn ja, sollten Sie "3" und nicht "3" ' – Gazler

+0

richtig übergeben! Ich habe die Schnur dort vermisst ... Danke Gazler (mach das bitte eine Antwort). –

Antwort

1

Sie erhalten "schlechtes Argument im arithmetischen Ausdruck" als

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

ändern:

header_linkNumber: "3" 

An:

header_linkNumber: 2 

Als interessante Randnotiz, können Sie tatsächlich vergleichen Strings auf ganze Zahlen:

Sie eine ganze Zahl aus einem String Subtrahieren
iex> "3" <= 1 
false 

Sie sollte dies beachten, da dies zu unerwarteten Fehlern führen kann, wenn Sie anstelle von ganzen Zahlen Strings verwenden.

Die Reihenfolge (von http://elixir-lang.org/getting-started/basic-operators.html) ist:

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

+0

Tolle Randnotiz! Das lesen wir, aber vergessen dann eher ... –

Verwandte Themen