Elixir 简单字符串和整数管道在模板辅助对象中不起作用
我将此代码放在模板中(Elixir 简单字符串和整数管道在模板辅助对象中不起作用,elixir,phoenix-framework,Elixir,Phoenix Framework,我将此代码放在模板中(html.eex文件): String.replace(“px”和“”)|>Integer.parse>(*0.8)%> 其中@width是“125px” 我有两个错误: 1) 未为{125,“}实施协议Phoenix.HTML.Safe 2) “*”之前的语法错误 这是否意味着不可能在模板帮助器中使用这样的管道,或者我没有正确编写它?这里有几个问题 首先,管道的末尾不是对函数的调用: iex> 125 |> (*0.8) ** (SyntaxError) i
html.eex
文件):
String.replace(“px”和“”)|>Integer.parse>(*0.8)%>
其中@width
是“125px”
我有两个错误:
1) 未为{125,“}实施协议Phoenix.HTML.Safe
2) “*”之前的语法错误
这是否意味着不可能在模板帮助器中使用这样的管道,或者我没有正确编写它?这里有几个问题 首先,管道的末尾不是对函数的调用:
iex> 125 |> (*0.8)
** (SyntaxError) iex:6: syntax error before: '*'
你想要的是:
iex> 125 |> Kernel.*(0.8)
100.0
其次,返回一个元组:
iex> Integer.parse("125")
{125, ""}
您可以改为使用:
导致:
<%= @width |> String.replace("px", "") |> String.to_integer() |> Kernel.*(0.8) %>
String.replace(“px”和“”)|>String.to_integer()|>内核。*(0.8)%>
如果使用Integer.parse,则不需要String.replace,但需要从元组中获取元素:
<%= @width |> Integer.parse() |> elem(0) |> Kernel.*(0.8) %>
Integer.parse()|>elem(0)|>Kernel.*(0.8)%>
<%= @width |> String.replace("px", "") |> String.to_integer() |> Kernel.*(0.8) %>
<%= @width |> Integer.parse() |> elem(0) |> Kernel.*(0.8) %>