Phoenixでconfirm付きのdelete
phoenix_htmlのlink
ヘルパは、リクエストメソッドがgetの場合は普通にaタグでリンクを作り、そうでない場合はaタグをform
でラップして、onclick属性が働くような組み立て方をしてくれます。
で、何かリソースをdeleteするようなリンクでは、「ホントにOK?」な確認をして欲しいと思うわけで、Railsだとconfirm
オプションとか与えればよかったのですが、Phoenixではそうもいかず。
ソースを読んでみると、どうやらonclick属性はオプションでカスタマイズできないようです。 なので、やってることはヘルパとほぼ同じだけどonclickだけ違う、みたいなものを目指して、こんな感じに落ち着きました。
<%= form_tag(user_path(@conn, :delete, @user), method: :delete) do %> <% onclick = "if (confirm('You sure?')) {this.parentNode.submit(); return false;}" %> <%= content_tag(:a, "delete", href: "#", onclick: onclick) %> <% end %>
長いし、さすがにHack過ぎる気が...