【发布时间】:2015-12-22 03:15:17
【问题描述】:
我对同一个 Devise 方法有 2 次不同的调用:destroy_user_session。
工作是通过一种非常基本的方法完成的,并导致以下 HTML 代码:
<a rel="nofollow" data-method="delete" href="/users/sign_out">Logout</a>
他们我做了一个更花哨的,有更好的 UI,但仍然是相同的 Rails 应用程序(所以没有变化,只有生成的 HTML 不同):
<a class="tip" data-confirm="You are going to be disconnected" data-title="Logoff" rel="nofollow" data-method="delete" href="/users/sign_out" data-original-title="" title=""><i class="fa fa-power-off"></i></a>
虽然两者都使用相同的方法:删除以销毁当前用户会话,第二个返回 No route matches [GET] "/users/sign_out"。 p>
为 /users/sing_out 添加 GET 路由可能是一个选项,但不是干净的,因为它必须是一个 DELETE 调用。
【问题讨论】:
-
添加到您的路线
get "/users/sign_out", :to => "devise/sessions#destroy" -
这并不能解释为什么一个工作,为什么另一个不工作。
-
也许是您放置它们的顺序。为什么你不使用`
-
我正在使用 来生成它们。
-
似乎是 JS 问题。如果没有 Rails 的不显眼的 javascript 或 jquery_ujs,data-method 属性本身就没有任何作用。所以问题是这个链接是如何进入 DOM 的?它是否被动态插入到位?如果您(或您所依赖的脚本)正在使用 jQuery .clone()、.html() 等来创建该链接,它将恢复为默认链接行为,即。 GET 请求。
标签: html ruby session ruby-on-rails-4 devise