说我有一个函数的定义:
def rename(src, dst) do
<do rename>
end
Run Code Online (Sandbox Code Playgroud)
在我的Elixir库中,我可以在同一个库中创建:
alias rename, as: mv
Run Code Online (Sandbox Code Playgroud)
那么当用户可以在我的库中使用重命名和mv函数时?
我有一个凤凰路线,我想将一些表格数据发布到,但是表格中有大约4个字段是可选的(表格由最终用户构建,因此这些字段可能不存在于POST有效载荷中)
在路线的凤凰控制器中,您将如何处理?
例如:
我的表格有
Field1,
Field2
Field3 (optional)
Field4 (optional)
Field5 (optional)
Run Code Online (Sandbox Code Playgroud)
POST表单必须始终具有Field1,Field2但可以包含其他字段的任意组合.
所以到目前为止我的控制器代码是这样的:
def create(conn, %{"field1" => field1, "field2" => field2) do
end
Run Code Online (Sandbox Code Playgroud)
如何让其他3个可选?如果我将它们全部添加到那时它们将是必需的,我不希望为每个可能提交的表单创建一个函数,因为它似乎有点过分.
我有一些问题,拌匀,MIX_ENV=prod用mix phoenix.server,它失败的开始.在Linode的Ubuntu 14.04上运行所有最新的(Elixir 1.0.5,Phoenix 0.14.0),除了Erlang(17.x,17.3).
$ MIX_ENV=prod PORT=80 mix phoenix.server
{"Kernel pid terminated",application_controller,"{application_start_failure,elirc_site,{{shutdown,{failed_to_start_child,'Elixir.ElircSite.Endpoint',{shutdown,{failed_to_start_child,'Elixir.Phoenix.Endpoint.Server',{shutdown,{failed_to_start_child,{ranch_listener_sup,'Elixir.ElircSite.Endpoint.HTTP'},{shutdown,{failed_to_start_child,ranch_acceptors_sup,{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]},{supervisor,init,1,[{file,\"supervisor.erl\"},{line,243}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,306}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,239}]}]}}}}}}}}},{'Elixir.ElircSite',start,[normal,[]]}}}"}
Run Code Online (Sandbox Code Playgroud)
具体来说,我认为这部分是追踪.
{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]}
Run Code Online (Sandbox Code Playgroud) 我想在我部署的phoenix app上调试一个问题.有没有一种简单的方法来启用文件记录?
与rails创建uat.log和production.log的方式类似
我有一个嵌入式的刺痛":
tx <iq id="wUcdTMYuYoo41" to="2348138248411@" type="set" xmlns="w:profile:picture">
Run Code Online (Sandbox Code Playgroud)
我如何在Elixir中提供这样的字符串作为值?
例如:
iex> s= "tx <iq id="wUcdTMYuYoo41" to="2348138248411@" type="set" xmlns="w:profile:picture">"
Run Code Online (Sandbox Code Playgroud)
使用~s和~S没有帮助
iex(20)> s=~S("tx <iq id="wUcdTMYuYoo41" to="2348138248411@" type="set" xmlns="w:profile:picture">")
** (SyntaxError) iex:20: keyword argument must be followed by space after: w:
iex(20)> s=~s("tx <iq id="wUcdTMYuYoo41" to="2348138248411@" type="set" xmlns="w:profile:picture">")
** (SyntaxError) iex:20: keyword argument must be followed by space after: w:
iex(20)>
Run Code Online (Sandbox Code Playgroud) 在这个小卫生功能的Phoenix/Elixir应用程序中,当用户没有输入电子邮件时,我会遇到问题.
我正在使用结构来处理数据.一个简单的卫生功能(现在)只是剥离空白并更新结构(地图).到目前为止,它的工作很好,但是当领域email是nil,我得到一个错误.
** (FunctionClauseError) no function clause matching in String.Unicode.strip/1
Run Code Online (Sandbox Code Playgroud)
所以我引入了一个guard子句来检查这种情况,然后只清理用户名.
defmodule MyApp.User do
defstruct username: nil, email: nil, password: nil, hashed_password: nil
# Sanitizing input without guard clause
def sanitize_user(user)do
%{user | username: String.strip(user.username), email: String.strip(user.email)}
end
# Sanitizing input with guard clause
def sanitize_user(user) when is_nil(user.email) do
%{user | username: String.strip(user.username)}
end
def sanitize_user(user) when is_binary(user.email) do
%{user | username: String.strip(user.username), email: String.strip(user.email)}
end
end
Run Code Online (Sandbox Code Playgroud)
现在我在编译时遇到错误:
** (CompileError) web/models/user.ex:54: cannot invoke remote function Access.get/2 …Run Code Online (Sandbox Code Playgroud) 是否有内置数据类型可用于Elixir中的FIFO队列?
我已经查看了列表,但似乎获得列表尾部效率不高?也许我对此错了?
我的队列需要容纳100,000或更多元素.我需要的是,我为音频生成{t,y}形式的44100个元组.我正在尝试实现延迟,所以我需要在将其发送到处理管道之前排队几秒钟(最多可能是10?)的音频.
随着Map.merge我有:
Map.merge(%{ a: %{ b: 1 }}, %{ a: %{ c: 3 }}) # => %{ a: %{ c: 3 }}
Run Code Online (Sandbox Code Playgroud)
但实际上我想:
Map.merge(%{ a: %{ b: 1 }}, %{ a: %{ c: 3 }}) # => %{ a: %{ b: 1, c: 3 }}
Run Code Online (Sandbox Code Playgroud)
有没有为这种情况编写递归样板函数的本机方法?
我试图寻找User在他们的match_history领域中没有某个字符串元素的所有s .我猜了一下:
matched_user = User |> where([u], ^device_id not in u.match_history) |> limit(1) |> VideoChat.Repo.one
但它似乎打破了not部分.有没有办法做到这一点?
在Elixir项目中,您可以使用
Path.expand
Run Code Online (Sandbox Code Playgroud)
将文件或目录定义为当前文件的相对路径.
例如: Path.expand("../../../lib/file.ex")
但如何从项目的根级别找到路径?