Elixir phoenix Logout链接不起作用

时间:2015-12-25 00:49:04

标签: elixir phoenix-framework

我的应用程序中有以下Logout链接,但是当我点击它时,它什么也没做。

<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>

有没有人在这里看到任何明显错误的注销链接在点击时不会做任何事情?

早午餐-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"]
 },
 ...

3 个答案:

答案 0 :(得分:2)

我认为负责处理此类案例的代码位于phoenix_html软件包的js文件中,因此您需要确保已将此软件包添加到mix并在您的代码中包含以下行app.js文件取消注释:

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

答案 1 :(得分:0)

在我的情况下,它是由于缺少npm依赖性而发生的。

在phoenix.server日志中,我注意到app.js没有建立,因为没有babel-preset-2015,然后是babel-preset-2016。

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

答案 2 :(得分:-1)

一种可能的解决方法是执行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