增加一个注销的按钮在宁静的认证
-
24-09-2019 - |
题
我已经安装了宁静的身份验证和一切似乎是工作的罚款。我可以注册和登录。只有这样我可以注销,是通过输入URL http://localhost:3000/logout
我怎么添加一个注销的按钮上的一页?我想添加一个成员。页面
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
其中引用的session_controller.rb 但我得到一个错误的"不行动的答复显示。行动:创建、销毁和新的"
任何想法?感谢名单
解决方案
你有什么在你的路由文件?
尝试把
map.log_out 'logout', :controller => 'sessions', :action => 'destroy'
在您的路由。
然后只是有
<%= link_to "Sign out", log_out_url %>
有关的退出链接。
修改强>
所有的到你是如何指定路由。
由于你必须在路由的map.log_out,则URL HTTP://本地主机:3000 /注销一> URL由该拾取并路由到正确的行动。
如果您有:
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
这只会为你生成 HTTP的链接://本地主机:3000 /会话。但是,这无助于路由。您还需要指定正确的路线。
请注意,Rails不追加破坏行动的URL。 (它不会产生 HTTP://本地主机:3000 /会话/破坏)它假定,如果你有一个行动摧毁,你将有一个DELETE HTTP动词来发送。出于某种原因,它不是很完善,它实际上也犯规默认发送DELETE动词。
您可以迫使它这样做:
<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>
这仍然不会,除非你的工作也正确地路由它。如果你把下面进入路线:
map.resource :session
然后轨将产生所有动词的路由并为它们指定默认的操作,包括删除操作。更多信息可以在这里找到: Rails的路由从外面
这是整页是值得一读一遍又一遍,直到你真正了解它。路由的关键是理解的Rails!
有关一个简单的控制器等会话,这是更容易只是指定log_out路线,然后链接到log_out_url ..
(希望是有道理的,睡眠剥夺在爬行!)
其他提示
如果您使用 制定 和你的关注的模型 用户, 优雅的方式是在这里:
<%= link_to 'logout', destroy_user_session_path, method: :delete %>
它的工作,因为:
- 由于HTTP方法GET,POST,放、修补和删除,因此使用
method: :delete
(不method: :destroy
) - 我们使用
destroy_user_session_path
与 制定 和 用户 模特像往常一样,如果定义的其他型号名称(如 经理 你只是改变注销路径destroy_manager_session_path