gpt4 book ai didi

ruby-on-rails - 在 RESTFUL 身份验证中添加注销按钮

转载 作者:行者123 更新时间:2023-12-02 17:49:56 25 4
gpt4 key购买 nike

我已经安装了 RESTFUL 身份验证,一切似乎都工作正常。我可以注册并登录。我注销的唯一方法是输入 URL http://localhost:3000/logout

如何在页面上添加注销按钮?我尝试向members.rhtml 添加一个

<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>

引用了session_controller.rb但我收到错误“没有任何操作响应显示。操作:创建、销毁和新建”

有什么想法吗?感谢x

最佳答案

你的路由文件中有什么?

尝试放置

map.log_out 'logout', :controller => 'sessions', :action => 'destroy'

在您的 route 。

然后就可以了

<%= link_to "Sign out", log_out_url %>

退出链接。

编辑

这一切都取决于您如何指定路由。

因为路由中有map.log_out,所以url http://localhost:3000/logout url 由此被选取并路由到正确的操作。

如果你有:

<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>

这只会为您生成一个链接 http://localhost:3000/session 。但是,它对路由没有任何作用。您仍然需要指定正确的路线。

请注意,Rails 不会将销毁操作附加到 url 中。 (它不会创建 http://localhost:3000/session/destroy 。) 它假设如果您有一个 destroy 操作,您将使用 DELETE http 动词发送它。由于某种原因,它并不十分完美,并且实际上也没有默认发送 DELETE 动词。

您可以强制它执行此操作:

<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>

除非您也正确路由它,否则这仍然不起作用。如果将以下内容放入 route :

map.resource :session

然后rails将为所有动词生成路由并指定它们的默认操作,包括DELETE。更多信息可以在这里找到:Rails Routing from the Outside In .

整个页面值得一遍又一遍地阅读,直到您真正理解为止。路由是理解 Rails 的关键!

对于像 Sessions 这样的简单 Controller ,指定 log_out 路由然后链接到 log_out_url 会更容易。

(希望这是有道理的, sleep 不足正在悄然发生!)

关于ruby-on-rails - 在 RESTFUL 身份验证中添加注销按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2166635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com