【问题标题】:Rails Devise : session#destroy missingRails 设计:缺少会话#destroy
【发布时间】:2013-08-07 06:30:47
【问题描述】:

我刚刚为我的 Rails 应用程序设置了设计。它与“用户”模型有关。

当我查看创建的路线时,我可以看到:

destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy

但是,当我安装 Devise 时,并没有创建用于破坏会话的脚本。

我有点迷路了...我必须创建这个脚本吗?如果是,我必须把它放在哪里?在意见?但这真的是风景吗?

最后但并非最不重要的一点是,我必须在其中放入什么?

非常感谢。

【问题讨论】:

    标签: ruby-on-rails session devise destroy


    【解决方案1】:

    不,您不必为destroy_user_session 编写脚本。这是由设计的 SessionsController 的销毁操作处理的,因为您已经安装了设计 gem,所以它已经可用。除非您想更改 destroy 操作的默认行为,否则您只需要一个指向您视图上的操作的链接即可破坏会话,如下所示:

    <%= link_to 'Sign out', destroy_user_session_path, :method => :delete %> 并且设计将销毁当前会话

    【讨论】:

    • 哦,您在哪里可以找到这些信息?当我尝试这个时,我收到这条消息:没有路由匹配 [GET] "/users/sign_out" 似乎 Chrome 正在尝试发出 GET 请求而不是 DELETE...
    • 当我尝试使用 curl 手动执行请求时,会话仍然处于活动状态...
    • 先运行rake路由并确认destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy的存在
    • 我可以从您的帖子中看到您已经拥有到 devise/sessions#destroy 的路线,但您可以在此处查看另一个解决方案 link
    【解决方案2】:

    Devise 是一个引擎,因此您有适当的控制器 (Devise::SessionsController) 在 devise gem 代码中处理此请求。这意味着这条路线应该开箱即用。

    在这里设计 github 页面(附教程): https://github.com/plataformatec/devise

    在此处了解有关 Rails 引擎的更多信息: http://guides.rubyonrails.org/engines.html

    【讨论】:

    • 我已按照本教程进行操作,但只是被告知生成设计模型和视图...并且已为 sign_out 创建了路由,但没有任何代码打算实际破坏会话。
    • @Zoz 模型 - 是的。意见 - 不是。生成设计视图不是强制性的。
    猜你喜欢
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多