Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 用毒药编码一个外胚层模型:{:无效,{nil,“";投票”}_Elixir_Phoenix Framework_Elixir Poison - Fatal编程技术网

Elixir 用毒药编码一个外胚层模型:{:无效,{nil,“";投票”}

Elixir 用毒药编码一个外胚层模型:{:无效,{nil,“";投票”},elixir,phoenix-framework,elixir-poison,Elixir,Phoenix Framework,Elixir Poison,我想对两个模型进行编码,定义如下: web/models/vote.ex defmodule-LetsPlan.Vote-do 使用LetsPlan.Web,:model 别名LetsPlan。可用性 导入LetsPlan.Utils,仅限:[截止日期:1] @派生{Poison.Encoder,仅:[:名称,:可用性]} 模式“投票”做什么 字段:名称,:字符串,null:false 属于:event,LetsPlan.event 嵌入了很多:可用性,LetsPlan.Availability

我想对两个模型进行编码,定义如下:

web/models/vote.ex

defmodule-LetsPlan.Vote-do
使用LetsPlan.Web,:model
别名LetsPlan。可用性
导入LetsPlan.Utils,仅限:[截止日期:1]
@派生{Poison.Encoder,仅:[:名称,:可用性]}
模式“投票”做什么
字段:名称,:字符串,null:false
属于:event,LetsPlan.event
嵌入了很多:可用性,LetsPlan.Availability
时间戳
结束
结束
web/models/availability.ex

defmodule-LetsPlan.Availability do
使用LetsPlan.Web,:model
@派生{Poison.Encoder,仅:[:从,:到]}
嵌入式模式
字段:从,外部。日期
字段:到,特奥。日期
结束
结束
如果我在脚本中使用
Poison.encode
,并通过iex执行它,那么它可以正常工作:

别名LetsPlan.Repo
别名LetsPlan.Event
#与控制器中的代码相同
事件=事件|>Repo.get(1)
票数=(事件|>回购预加载(:票数)).票数
投票|>Poison.encode |>IO.puts{:好的,“…”}
但是,当我在控制器中执行完全相同的操作时,它会出错为
{:invalid,{nil,“posts”}
。我真的不明白有什么区别。以下是控制器的相关操作:

def create(conn,%%{“event_id”=>event_id,“vote”=>vote_params})do
变更集=
%投票{}
|>投票变更集(Map.put(投票参数,“事件id”,事件id))
event=event |>Repo.get!(事件编号)
如果changeset.valid有效?做
回购插入(变更集)
票数=(事件|>回购预加载(:票数)).票数
投票|>检查|>IO.puts
case毒药。编码投票吗
{:好的,payload}->Endpoint.broadcast(“事件:{event\u id}”,“新投票”,
有效载荷)
{:error,reason}->reason |>inspect |>IO.put
结束
康涅狄格州
|>放置闪存(:info,“添加了可用性”)
|>重定向(到:事件路径(连接、显示、事件))
其他的
render conn,“new.html”,变更集:变更集,事件:事件
结束
结束

注意:我使用的不是毒药2.1.0,而是毒药1.5.2版,因为Ecto将其锁定。

投票|>inspect |>IO.put
打印什么?(提示:
|>inspect |>IO.put
|>IO.inspect
相同)@Dogbert谢谢你的提示!它打印
{:error,{:invalid,{nil,“voces”}}
。它应该打印
{:好的,“[json here]”}
,就像在脚本中一样。你确定
投票
包含这一点还是
原因
?@Dogbert对不起,这就是原因。投票结果是这样的:@Dogbert我很困惑。现在它起作用了。我没有改变任何事!我刚重启服务器?!这不应该和毒药有任何关系…这行的
投票|>inspect |>IO.put
打印是什么?(提示:
|>inspect |>IO.put
|>IO.inspect
相同)@Dogbert谢谢你的提示!它打印
{:error,{:invalid,{nil,“voces”}}
。它应该打印
{:好的,“[json here]”}
,就像在脚本中一样。你确定
投票
包含这一点还是
原因
?@Dogbert对不起,这就是原因。投票结果是这样的:@Dogbert我很困惑。现在它起作用了。我没有改变任何事!我刚重启服务器?!那不应该和毒药有关。。。