情况: 我想破坏Rails中的当前会话,目前我正通过设计登录到管理模型设置。
我认为将site.io/admins/sign_out
输入到网址中就足够了,但这会假定GET
请求并且不起作用。
没有路线匹配[GET]“/ admins / sign_out”
需要进行method: :delete
请求以销毁会话。
可以像site.io/admins/sign_out{action:delete}
一样完成某些事情吗?
更新
根据请求,这是与admin相关的路由。
devise_for :admins
答案 0 :(得分:1)
要使用设计注销,您需要POST到/admins/sign_out
。我使用rails link_to
来帮助解决这个问题。
<%= link_to "Log Out", destroy_admin_session_path, method: :delete %>
您也可以在没有ERB或link_to
<a rel="nofollow" data-method="delete" href="/admins/sign_out">Log Out</a>
对于user
模型,只需将admin
替换为user
<%= link_to "Log Out", destroy_user_session_path, method: :delete %>
或
<a rel="nofollow" data-method="delete" href="/users/sign_out">Log Out</a>
答案 1 :(得分:1)
试试这个:
<%= link_to "Sign Out", destroy_admin_session_path, :method => :delete %>
答案 2 :(得分:0)
如果您强行注射site.io/admins/sign_out
。
它将使用Parameters: {"id"=>"sign_out"}
将您发送到控制器的show动作。因为它假定它是一个show动作而不是调用Delete
函数。
所以,我认为不可能直接从URL强制使用删除方法。
答案 3 :(得分:0)
不,您无法手动输入浏览器上的链接并将其注销,因为在浏览器中您无法指定PUT
POST
或Delete
。如果您定义注销路径为GET
方法您可以直接输入路径并将其记录为浏览器,默认情况下会提供GET
方法。你可以像Rest邮件一样在Rest Client上进行,如下所示
http://localhost:3000/users/sign_out.html
选择方法DELETE