**(RuntimeError)期望动作/ 2返回一个Plug.Conn,所有插件必须接收连接(conn)并返回连接

时间:2017-01-30 07:23:45

标签: elixir phoenix-framework ecto

def create_trans(conn, _params) do

  address = __MODULE__.get_add()
  card = __MODULE__.get_card()

  case Alpha.beta(card, [billing_address: address]) do
    {:ok, result}     -> render conn,"purchase.json",%{purchase: result}
    {:error, reason}  -> render conn,"purchase.json",%{purchase: reason} 
  end

end

上面的代码给出了以下错误,我错过了什么。

  

**(RuntimeError)期望动作/ 2返回一个Plug.Conn,所有插件必须接收连接(conn)并返回连接

1 个答案:

答案 0 :(得分:0)

也许提供Alpha.beta/2应返回的更多信息。通常,您的错误指向case块中并非每个方案都包含。考虑使用最后一个方案_,它将与其余方案匹配。

如果你将Alpha.beta/2的结果分配给变量然后渲染结果而不是使用case,你可以简单地使这段代码更具可读性和干燥性,如果你基本上两者都做同样的话这些情景。

{_, result} = Alpha.beta(card, [billing_address: address)
render(conn, "purchase.json", %{purchase: result}

但在这种情况下,您必须 100%确保此Alpha.beta/2返回一个元组,该元组在上面的模式匹配中匹配,并且根据您的问题,它不太确定。