Phoenix阻止conn从Liveview重定向



我有一个Liveview的表单,其中用户做了几个选择,然后在提交表单拍摄一个post请求到一个标准的controller来处理下载。我在controller:download动作中有一个case语句,当它成功创建时发送下载,这工作得很好。我不知道如何保持其他:error案例从重定向远离Liveview。

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

几个月前我不得不这样做,我最终重定向到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

它变得有点丑陋。我发现自己经常把事情分配给指挥来完成这类事情。

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

最新更新