2017-01-30 5 views
0
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) и вернуть соединение

** (RuntimeError) ожидается действие/2, чтобы вернуть Plug.Conn, все заглушки должны получить соединение (сопп) и возвращает соединение

+0

Похоже, что вы не рассматривали все возможные варианты - попробуйте сделать также случай для '_' в конце этого' case'. – PatNowak

ответ

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 возвращает кортеж, который соответствует шаблону в выше и в соответствии с вашим вопросом, это не так уверен.