Elixir phoenix 注销 link 不起作用

Elixir phoenix Logout link does not work

我的应用程序中有以下注销 link,但是当我单击它时,它没有执行任何操作。

<li class="nav-item">
  <%= link "Logout", to: session_path(@conn, :delete), method: :delete, class: "nav-link" %>
</li>

上面代码生成的html元素是

<li class="nav-item">
  <form action="/logout" class="link" method="post">
    <input name="_method" type="hidden" value="delete">
    <input name="_csrf_token" type="hidden" value="GiA4JANYN10+JQhfUgIEARxZCRIEAAAUijC25v5Kj8j7KI6qrOtv==">
    <a data-submit="parent" href="#">Logout</a>
  </form>
</li>

有没有人看到这里有什么明显的错误,点击注销 link 不会执行任何操作?

早午餐-config.js

javascripts: {
 joinTo: {
   "js/app.js": /^(web\/static\/js)/,
   "js/jquery-ujs.js.js": ["web/static/vendor/js/jquery-ujs.js.js"],
   "js/jquery.js": ["web/static/vendor/js/jquery.js"]
 },
 ...

我相信负责处理此类情况的代码在 phoenix_html 包的 js 文件中,因此您需要确保已将此包添加到 mix 并具有以下行在您的 app.js 文件中未注释:

import "deps/phoenix_html/web/static/js/phoenix_html"

一种可能的解决方法是执行 GET 请求而不是 DELETE 请求:

您的 html.eex 代码:

<li class="nav-item">
  <%= link "Logout", to: session_path(@conn, :delete), class: "nav-link" %>
</li>

一个例子router.ex:

resources "/sessions", SessionController, only: [:new, :create]
get "/sessions", SessionController, :delete

在我的例子中,它是由于缺少 npm 依赖项而发生的。

在 phoenix.server 日志中,我注意到 app.js 由于缺少 babel-preset-2015 和 babel-preset-2016 而未构建。

npm i --save-dev babel-preset-2015 babel-preset-2016