2016-04-01 9 views
0

で正しく引数を渡すことができません:私は、この内部の「ウェブ/テンプレート/モジュール/ headerHC.html.eex」を持っているテンプレート

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

そこで、私は「ウェブ/レイアウト/ HCでこのコンポーネントを使用します.html.eex:ウェブ/ビュー/ page_view.exを ""

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

最後に私が内部に定義しました":

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

問題は、私はこのエラーを取得していますということです。この行を指して

bad argument in arithmetic expression:私が代わりに<%= for element <- MyProject.PageView.Recursion.buildElements(2),1) do %>

のような多数の@header_linkNumberを挿入したとき

def buildElements(n) when n <= 1 do 

これが起こるには、私はすでにその代わり@MyProject.ModuleView.header_linkNumberを使用しようとしましたが、その後、私はこのエラーを取得する:

cannot set attribute @__aliases__ inside function/macro 
+0

はあなたがbuildElementsの引数としてheader_linkNumberを使用していますか?もしそうなら、あなたは '' 3 '''ではなく '3'を渡すべきです。 – Gazler

+0

そうです!私はその文字列を逃した...ありがとうガズラー(答えをしてください)。 –

答えて

1

「算術式では不正な引数」があなたは文字列から整数を引いている:

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

変更:

header_linkNumber: "3" 

へ:

header_linkNumber: 2 

興味深いサイドノートとして、あなたは実際に整数に文字列を比較することができます

iex> "3" <= 1 
false 

あなた整数の代わりに文字列を使用している場合に予期しないエラーが発生する可能性があるため、これを認識する必要があります。 (http://elixir-lang.org/getting-started/basic-operators.htmlから)

順序は次のとおりです。

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

+0

素晴らしいサイドノート!これは私たちが読んだものの、忘れがちなものです... –

関連する問題