1

我有一个带有表单的 Liveview,用户在其中做出几个选择,然后在提交表单时将发布请求发送到标准controller以处理下载。我在成功创建下载时发送下载case的操作中有一个声明,这工作正常。controller :download我不知道如何防止其他:error情况从 Liveview 重定向。

case get_report do
  {:ok, csv} ->
    conn
    |> send_download({:binary, csv}, filename: "test.csv")
  {:error, _msg} ->
    do_something_pub_subby()
    conn
    |> ????
end
4

1 回答 1

0

几个月前我不得不这样做,我最终重定向到 LiveView 路由,如下所示:

case get_report do
  {:ok, csv} ->
    conn
    |> send_download({:binary, csv}, filename: "test.csv")
  {:error, _msg} ->
    do_something_pub_subby()
    conn
    |> put_flash(:error, ""unable to download)
    |> redirect(to: Routes.home_index_path(conn, :index))
end

虽然它变得有点难看。我发现自己经常将事情分配给 conn 以使这种事情发挥作用。

你应该看看这个库:https ://github.com/karolsluszniak/phoenix_live_controller 我自己没有尝试过,但我很确定它支持你想要做的事情。

于 2021-08-12T11:55:59.377 回答