无法在模板中正确传递参数
Unable to pass correctly an argument in a template
我里面有这个"web/templates/module/headerHC.html.eex":
<%= for element <- MyProject.PageView.Recursion.buildElements(@header_linkNumber),1) do %>
<%= element %>
<% end %>
然后,我在"web/layout/HC.html.eex"中使用这个组件:
<%= render FabricaASA.ModuleView, "headerHC.html", conn: @conn,
header_class: nil,
header_linkNumber: "3"
%>
最后我在里面定义了 "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
问题是我收到了这个错误:
bad argument in arithmetic expression
指向这一行:
def buildElements(n) when n <= 1 do
当我插入 @header_linkNumber
而不是像 <%= for element <- MyProject.PageView.Recursion.buildElements(2),1) do %>
这样的数字时会发生这种情况
我已经尝试使用 @MyProject.ModuleView.header_linkNumber
代替,但随后出现此错误:
cannot set attribute @__aliases__ inside function/macro
当您从字符串中减去一个整数时,您将得到 "bad argument in arithmetic expression":
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
我里面有这个"web/templates/module/headerHC.html.eex":
<%= for element <- MyProject.PageView.Recursion.buildElements(@header_linkNumber),1) do %>
<%= element %>
<% end %>
然后,我在"web/layout/HC.html.eex"中使用这个组件:
<%= render FabricaASA.ModuleView, "headerHC.html", conn: @conn,
header_class: nil,
header_linkNumber: "3"
%>
最后我在里面定义了 "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
问题是我收到了这个错误:
bad argument in arithmetic expression
指向这一行:
def buildElements(n) when n <= 1 do
当我插入 @header_linkNumber
而不是像 <%= for element <- MyProject.PageView.Recursion.buildElements(2),1) do %>
我已经尝试使用 @MyProject.ModuleView.header_linkNumber
代替,但随后出现此错误:
cannot set attribute @__aliases__ inside function/macro
当您从字符串中减去一个整数时,您将得到 "bad argument in arithmetic expression":
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